Cómo agregar instrucciones de serialización XML sin modificar la clase
-
03-07-2019 - |
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.
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
}