¿Cómo serializo una lista sin el elemento externo usando el serializador de contrato de datos? Estoy usando .Net 3.5. Tengo una clase que contiene una lista, entre otras cosas, que deseo para serializar sin el elemento exterior para ser compatible con el XSD pertinente:Serializador de contrato de datos: cómo omitir el elemento externo de una colección
[DataContract(Name="MyClass")]
public class MyClass
{
...
[DataMember(Name="Parameters")]
public List<Parameter> Parameters;
...
}
[DataContract(Name="Parameter")]
public struct Parameter
{
[DataMember(Name="ValueName")]string ValueName;
[DataMember(Name="Value")]int Value;
public Parameter(string ValueName, int Value)
{
this.ValueName = ValueName;
this.Value = Value;
}
}
Lo anterior serializa como (suponiendo sólo un parámetro en la lista) :
<MyClass>
<Parameters>
<Parameter>
<ValueName></ValueName>
<Value></Value>
</Parameter>
</Parameters>
</MyClass>
me gustaría serializarlo de la siguiente manera:
<MyClass>
<Parameter>
<ValueName></ValueName>
<Value></Value>
</Parameter>
</MyClass>
Utilizando el XmlSerializer que puedo hacer esto mediante la aplicación de la [XmlElement] a la lista:
[XmlElement ("Parameter")]
public List<Parameter> Parameters;
Sin embargo no quiero utilizar el XmlSerializer
porque mi clase tiene algunas propiedades que no están serialización amable y me estaba esperando para hacer frente a los que utilizan la familia [OnSerializing] de atributos.
Gracias.
Usted no tiene mucho control sobre el formateo de mensajes con DataContracts. Es posible que deba usar MessageContract; consulte http://msdn.microsoft.com/en-us/library/ms730255.aspx – StuartLC