Сериализация списка <>, экспортированного как ICollection <> в XML

У меня есть приложение C # .NET 3.5, в котором я хотел бы сериализовать класс, содержащий List <> , в XML. Мой класс выглядит так:

[XmlRoot("Foo")]
class Foo
{
    private List<Bar> bar_ = new List<Bar>();

    private string something_ = "My String";

    [XmlElement("Something")]
    public string Something { get { return something_; } }

    [XmlElement("Bar")]
    public ICollection<Bar> Bars
    {
        get { return bar_; }
    }
}

Если я заполню его так:

Bar b1 = new Bar();
// populate b1 with interesting data
Bar b2 = new Bar();
// populate b2 with interesting data

Foo f = new Foo();
f.Bars.Add(b1);
f.Bars.Add(b2);

А затем сериализую его следующим образом:

using (System.IO.TextWriter textWriter = new System.IO.StreamWriter(@"C:\foo.xml"))
{
    System.Xml.Serialization.XmlSerializer serializer = new System.Xml.Serialization.XmlSerializer(typeof(Foo));
    serializer.Serialize(textWriter, f);
}

Я получаю файл, который выглядит так:

<Foo>
    <Something>My String</Something>
</Foo>

Но мне нужен XML, который выглядит вот так:

<Foo>
    <Something>My String</Something>
    <Bar>
        <!-- Data from first Bar -->
    </Bar>
    <Bar>
        <!-- Data from second Bar -->
    </Bar>
</Foo>

Что мне нужно сделать, чтобы List <> появился в XML?

7
задан PaulH 20 September 2011 в 18:59
поделиться