Сериализатор контракта данных - как опустить внешний элемент коллекции

Как мне сериализовать список без внешнего элемента с помощью сериализатора контракта данных? Я использую .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].

Спасибо.

8
задан chrisj 21 December 2011 в 14:05
поделиться