Estoy intentando generar un documento xml en un formato específico. Me gustaría omitir la serialización de una propiedad según el valor de la propiedad.Xml Serialization Dynamic Ignore
public class Parent
{
public Parent()
{
myChild = new Child();
myChild2 = new Child() { Value = "Value" };
}
public Child myChild { get; set; }
public Child myChild2 { get; set; }
}
public class Child
{
private bool _set;
public bool Set { get { return _set; } }
private string _value = "default";
[System.Xml.Serialization.XmlText()]
public string Value
{
get { return _value; }
set { _value = value; _set = true; }
}
}
System.Xml.Serialization.XmlSerializer x = new System.Xml.Serialization.XmlSerializer(typeof(Parent));
x.Serialize(Console.Out, new Parent());
Si Set es falsa, quiero toda la propiedad a no ser serializado, mi XML resultante debe ser
<Parent>
<myChild2>default</myChild2>
</Parent>
En lugar de
<Parent>
<myChild/>
<myChild2>default</myChild2>
</Parent>
¿Hay alguna manera de que puedo hacer esto limpiamente con IXmlSerializable o cualquier otra cosa?
Gracias!
que tienen una gran cantidad de propiedades que son todos de tipo infantil, preferiría no tener la ShouldSerialize para cada uno. Podría establecer todas mis propiedades en nulo que no estén configuradas antes de serializar ... – TrevDev
Publiqué una respuesta para establecer dinámicamente el valor en nulo a través de un método que se llamaría antes de la serialización. ¿Tuviste una idea más clara para asignar un valor nulo? – TrevDev
@Thx no realmente ... –