Как сериализовать список без внешнего элемента с помощью сериализатора контракта данных? Я использую .Net 3.5. У меня есть класс, содержащий список, среди прочего, который я хочу сериализовать без внешнего элемента, чтобы он соответствовал соответствующему XSD:
[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].
Спасибо.