Come si serializza un elenco senza l'elemento esterno utilizzando il serializzatore contratto dati? Sto usando .Net 3.5. Ho una classe che contiene un elenco, tra le altre cose, che desidero serializzare senza l'elemento esterno per essere compatibile con il XSD pertinente:- Come omettere l'elemento esterno di una raccolta
[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;
}
}
Quanto sopra serializza come (supponendo un solo parametro nella lista) :
<MyClass>
<Parameters>
<Parameter>
<ValueName></ValueName>
<Value></Value>
</Parameter>
</Parameters>
</MyClass>
Vorrei serializzare come segue:
<MyClass>
<Parameter>
<ValueName></ValueName>
<Value></Value>
</Parameter>
</MyClass>
Utilizzando il XmlSerializer posso farlo applicando la [XmlElement] alla lista:
[XmlElement ("Parameter")]
public List<Parameter> Parameters;
Comunque io non voglio usare il XmlSerializer
perché la mia classe ha alcune proprietà che non sono la serializzazione amichevole e speravo di affrontare coloro che utilizzano la famiglia [OnSerializing] di attributi.
Grazie.
Non avete molto controllo su un messaggio formattazione con DataContracts. Potrebbe essere necessario utilizzare MessageContract - vedere http://msdn.microsoft.com/en-us/library/ms730255.aspx – StuartLC