Код: Выделить всё
public abstract class Level
{
}
[XmlRoot("SubLevel1")]
public class SubLevel1 : Level
{
public string prop1 { get; set; }
public SubLevel1()
{
}
public SubLevel1(string prop)
{
this.prop1 = prop;
}
}
[XmlRoot("SubLevel2")]
public class SubLevel2 : Level
{
[XmlText]
public string prop2 { get; set; }
public SubLevel2()
{
}
public SubLevel2(string s)
{
this.prop2 = s;
}
}
Код: Выделить всё
[XmlInclude(typeof(SubLevel1))]
[XmlInclude(typeof(SubLevel2))]
[XmlRoot("LevelCollection")]
public class LevelCollection : ICollection
{
protected List m_Levels;
public List Levels
{
get { return m_Levels; }
set { m_Levels = value; }
}
public LevelCollection()
{
m_Levels = new List();
}
}
Код: Выделить всё
Levels.LevelCollection collection = new Levels.LevelCollection();
collection.Add(new Levels.SubLevel1("aaa"));
collection.Add(new Levels.SubLevel2("bbb"));
XmlSerializer serializer = new XmlSerializer(typeof(Levels.LevelCollection));
StringWriter sw = new StringWriter();
XmlWriter writer = XmlWriter.Create(sw);
serializer.Serialize(writer, obj);
string xml = sw.ToString();
Код: Выделить всё
aaa
bbb
Код: Выделить всё
aaa
bbb
Подробнее здесь: https://stackoverflow.com/questions/791 ... es-instead