Como posso serializar classes internas usando o XmlSerialize
Estou construindo uma biblioteca para interagir com terceiros. A comunicação é através de mensagens XML e HTTP. Isso está funcionand
Mas, qualquer que seja o código que use a biblioteca, não precisa estar ciente das classes internas. Meus objetos internos são serializados para XML usando este método:
internal static string SerializeXML(Object obj)
{
XmlSerializer serializer = new XmlSerializer(obj.GetType(), "some.domain");
//settings
XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
settings.OmitXmlDeclaration = true;
using (StringWriter stream = new StringWriter())
{
using (XmlWriter writer = XmlWriter.Create(stream, settings))
{
serializer.Serialize(writer, obj);
}
return stream.ToString();
}
}
No entanto, quando altero o modificador de acesso das minhas classes parainternal
, Recebo uma exceção emtempo de execuçã:
[System.InvalidOperationException] = {"MyNamespace.MyClass está inacessível devido ao seu nível de proteção. Somente tipos públicos podem ser processados."}
Essa exceção acontece na primeira linha do código acim
Gostaria que as aulas da minha biblioteca não fossem públicas porque não quero expô-las. Posso fazer isso? Como posso serializar tipos internos usando meu serializador genérico? O que estou fazendo errado