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.

Foi útil?

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
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top