Сериализация элементов массива, но не массива (XMLSerizlization) - PullRequest
0 голосов
/ 14 сентября 2011

У меня есть простой массив, который мне нужно сериализовать как часть более крупного объекта.

public class Holder
{
    public int ID { get; set; }
    public string Name { get; set; }
    public Thing[] Thingies { get; set; }
}

public class Thing {}

Обычно это будет сериализовано как:

...
<Holder>
    <ID>...</ID>
    <Name>...</Name>
    <ArrayOfThing>
        <Thing>...</Thing>
        <Thing>...</Thing>
        <Thing>...</Thing>
        ...
    </ArrayOfThing>
</Holder>

Не слишком заботясь одесериализации, есть ли способ, которым я мог бы просто удалить элемент ArrayOf, но оставить элементы внутри, чтобы у меня было:

...
<Holder>
    <ID>...</ID>
    <Name>...</Name>
    <Thing>...</Thing>
    <Thing>...</Thing>
    <Thing>...</Thing>
    ...
</Holder>

Ответы [ 3 ]

1 голос
/ 14 сентября 2011

Попробуйте

public class Holder
{
    public int ID { get; set; }
    public string Name { get; set; }

    [XmlElement("Thing")]
    public Thing[] Thingies { get; set; }
}

MSDN для XmlElementAttribute также имеет несколько примеров.

0 голосов
/ 14 сентября 2011

Используйте атрибут [XmlElement]:

[XmlElement]
public Thing[] Thingies { get; set; }  
0 голосов
/ 14 сентября 2011

Вы могли бы реализовать IXmlSerializable, чтобы позволить вам читать и писать Thing или другие дочерние элементы из содержащего XML-элемента.

Вот как вы могли бы реализовать этот Правильный способ реализации IXmlSerializable?

...