如何在不使用外部元素的情況下使用Data Contract Serializer來序列化列表?我正在使用.Net 3.5。我有一個包含一個列表中,除其他事項外的一類,即我希望沒有外部元件來序列爲符合相關XSD:Data Contract Serializer - 如何省略集合的外部元素
[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;
}
}
上述序列化如(假設在列表中只有一個參數) :
<MyClass>
<Parameters>
<Parameter>
<ValueName></ValueName>
<Value></Value>
</Parameter>
</Parameters>
</MyClass>
我想如下序列化它:
<MyClass>
<Parameter>
<ValueName></ValueName>
<Value></Value>
</Parameter>
</MyClass>
使用XmlSerializer我可以通過應用[的XmlElement]到列表中做到這一點:
[XmlElement ("Parameter")]
public List<Parameter> Parameters;
但是我不想用XmlSerializer
,因爲我的學生都沒有被序列化友好的一些屬性,我希望能對付使用屬性的[OnSerializing家族的。
謝謝。
你不必在消息DataContracts在格式化太多的控制。您可能需要使用MessageContract - 請參閱http://msdn.microsoft.com/en-us/library/ms730255.aspx – StuartLC