I have a C# .NET 3.5 application where I would like to serialize a class containing a List<> to XML. My class looks like this:
[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_; }
    }
}
If I populate it like this:
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);
And then serialize it like this:
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);
}
I get a file that looks like this:
<Foo>
    <Something>My String</Something>
</Foo>
But, what I want is XML that looks like this:
<Foo>
    <Something>My String</Something>
    <Bar>
        <!-- Data from first Bar -->
    </Bar>
    <Bar>
        <!-- Data from second Bar -->
    </Bar>
</Foo>
What do I need to do to get the List<> to appear in the XML?