Can anyone explain why the following program doesn't work? The
attributes and elements of the MessageList class are not being
generated.
Am I doing something incorrectly? Or if this is a bug in .NET, is
there a known workaround?
using System;
using System.IO;
using System.Collecti ons.Generic;
using System.Xml;
using System.Xml.Seri alization;
using System.Text;
[Serializable, XmlRoot("Messag e")]
public class Message
{
private int _id;
private string _description;
[XmlAttribute("i d")]
public int Id
{
get { return _id; }
set { _id = value; }
}
[XmlElement("Des cription")]
public string Description
{
get { return _description; }
set { _description = value; }
}
}
[Serializable, XmlRoot("Messag eList")]
public class MessageList : List<Message>
{
private int _id;
private string _name = "";
[XmlAttribute("i d")]
public int Id
{
get { return _id; }
set { _id = value; }
}
[XmlElement("Nam e")]
public string Name
{
get { return _name; }
set { _name = value; }
}
}
public class Program
{
public static void Main()
{
Program test = new Program();
Message m1 = new Message();
m1.Id = 1;
m1.Description = "Message 1";
Message m2 = new Message();
m2.Id = 2;
m2.Description = "Message 2";
MessageList messageList = new MessageList();
messageList.Add (m1);
messageList.Add (m2);
messageList.Id = 20070822;
test.Serialize( messageList);
Console.ReadLin e();
}
private void Serialize<T>(T obj)
{
string xml;
XmlSerializer serializer = new XmlSerializer(t ypeof(T));
using (MemoryStream memoryStream = new MemoryStream())
{
using (XmlTextWriter xmlTextWriter = new
XmlTextWriter(m emoryStream, Encoding.UTF8))
{
xmlTextWriter.F ormatting = Formatting.Inde nted;
serializer.Seri alize(xmlTextWr iter, obj);
xml =
Encoding.UTF8.G etString(((Memo ryStream)xmlTex tWriter.BaseStr eam).ToArray()) .Trim();
}
}
Console.WriteLi ne(xml);
}
}