Код: Выделить всё
public void Main()
{
LevelCollection collection = new LevelCollection();
collection.Add(new SubLevel1("aaa"));
collection.Add(new SubLevel2("bbb"));
XmlSerializer serializer = new XmlSerializer(typeof(LevelCollection));
StringWriter sw = new StringWriter();
XmlWriter writer = XmlWriter.Create(sw);
serializer.Serialize(writer, collection);
string xml = sw.ToString();
TestContext.WriteLine(xml);
}
[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();
}
[XmlIgnore]
public int Count
{
get { return m_Levels.Count; }
}
public bool IsReadOnly { get; set; }
public void Add(Level level)
{
m_Levels.Add(level);
}
public void Clear()
{
m_Levels.Clear();
}
public bool Contains(Level item)
{
return m_Levels.Contains(item);
}
public void CopyTo(Level[] array, int arrayIndex)
{
m_Levels.CopyTo(array, arrayIndex);
}
public IEnumerator GetEnumerator()
{
return m_Levels.GetEnumerator();
}
public bool Remove(Level item)
{
return m_Levels.Remove(item);
}
IEnumerator IEnumerable.GetEnumerator()
{
return m_Levels.GetEnumerator();
}
}
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 prop)
{
this.prop2 = prop;
}
}
Код: Выделить всё
aaa
bbb
Код: Выделить всё
aaa
bbb
Подробнее здесь: https://stackoverflow.com/questions/791 ... es-instead