Pregunta

¿Existe una forma inteligente de agregar instrucciones de serialización XML sin modificar la clase serializada?

No me gusta la serialización predeterminada y no puedo modificar la clase. Estaba considerando la posibilidad de heredar la clase y utilizar Shadows (VB.NET) para volver a implementar las propiedades (con las instrucciones de serialización), pero da como resultado una gran cantidad de código duplicado y se ve terrible.

La solución ideal que busco es básicamente un método para mantener todas las instrucciones de serialización en un archivo separado.

¿Fue útil?

Solución

¿Has examinado el uso de XmlAttributeOverrides?

.NET Framework Class Library: XmlAttributeOverrides Class

  

primero, puede controlar y aumentar la serialización de los objetos encontrados en una DLL-- incluso si no tiene acceso a la fuente ;

     

segundo, puedes crear un conjunto de clases serializables, pero serializar los objetos en    múltiples maneras . Por ejemplo, en lugar de serializar miembros de una clase   instancia como elementos XML, puede serializarlos como atributos XML,   resultando en un documento más eficiente para el transporte.

Otros consejos

Use la reflexión para obtener los valores de todas las propiedades de la clase y luego escríbalos como atributos en un 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 bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top