Estoy usando el nuevo .NET 3.0 DataContractSerializer. Tengo tanto Nullable < > y List <> objetos que voy a serializar. Ejemplo:¿Puedo configurar DataContractSerializer para que no cree elementos opcionales (es decir, Nullable <> y List <>) en XML de salida?
[DataContract(Namespace = "")]
class Test
{
public static void Go()
{
Test test = new Test();
var dcs = new DataContractSerializer(typeof(Test));
dcs.WriteObject(new StreamWriter("test.xml").BaseStream, test);
}
[DataMember]
public Nullable<int> NullableNumber = null;
[DataMember]
public int Number = 5;
[DataMember]
public List<int> Numbers = new List<int>();
}
Cuando .NET serializa un nulo o una lista vacía, se pone en nil (por Anulable) y vacío (para listas) elementos en el XML. El ejemplo anterior genera:
<Test xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<NullableNumber i:nil="true"/>
<Number>5</Number>
<Numbers xmlns:a="http://schemas.microsoft.com/2003/10/Serialization/Arrays"/>
</Test>
Por razones que no tengo tiempo para describir quisiera eliminar los elementos superfluos NullableNumber y números, así:
<Test xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<Number>5</Number>
</Test>
De hecho, los Deserializa archivo anteriores con el serializador bien.
Gracias por su ayuda!