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.Collections.Generic;
using System.Xml;
using System.Xml.Serialization;
using System.Text;
[Serializable, XmlRoot("Message")]
public class Message
{
private int _id;
private string _description;
[XmlAttribute("id")]
public int Id
{
get { return _id; }
set { _id = value; }
}
[XmlElement("Description")]
public string Description
{
get { return _description; }
set { _description = value; }
}
}
[Serializable, XmlRoot("MessageList")]
public class MessageList : List<Message>
{
private int _id;
private string _name = "";
[XmlAttribute("id")]
public int Id
{
get { return _id; }
set { _id = value; }
}
[XmlElement("Name")]
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.ReadLine();
}
private void Serialize<T>(T obj)
{
string xml;
XmlSerializer serializer = new XmlSerializer(typeof(T));
using (MemoryStream memoryStream = new MemoryStream())
{
using (XmlTextWriter xmlTextWriter = new
XmlTextWriter(memoryStream, Encoding.UTF8))
{
xmlTextWriter.Formatting = Formatting.Indented;
serializer.Serialize(xmlTextWriter, obj);
xml =
Encoding.UTF8.GetString(((MemoryStream)xmlTextWrit er.BaseStream).ToArray()).Trim();
}
}
Console.WriteLine(xml);
}
}