Como adicionar instruções de serialização XML sem modificar a classe
-
03-07-2019 - |
Pergunta
Existe uma maneira inteligente de adicionar instruções de serialização XML sem modificar a classe serializada?
Eu não gosto a serialização padrão e eu não posso modificar a classe. Eu estava considerando herdar a classe, e usando Shadows (VB.NET) para voltar a implementar as propriedades (com as instruções de serialização), mas resulta em um monte de código duplicado e apenas parece terrível.
A solução ideal que eu estou procurando é basicamente um método para manter todas as instruções de serialização em um arquivo separado.
Solução
Você já olhou em usar XmlAttributeOverrides?
.NET Framework Class Library: XmlAttributeOverrides Class
Em primeiro lugar, você pode controlar e aumentar a serialização de objetos encontrados em uma DLL - mesmo se você não tem acesso à fonte ;
Em segundo lugar, você pode criar um conjunto de classes serializáveis, mas serializar os objetos várias maneiras . Por exemplo, em vez de serialização membros de uma classe exemplo como elementos XML, você pode serializar-los como atributos XML, resultando em um documento mais eficiente para o transporte.
Outras dicas
Use a reflexão para obter os valores de todas as propriedades da classe, em seguida, escrevê-los como atributos de que um XmlNode
PropertyInfo[] properties = control.GetType().GetProperties();
foreach (PropertyInfo property in properties)
{
object o = property.GetValue(control, null);
// write value of o.ToString() out as an attribute on a XmlNode
// where attribute name is property.Name
}