Если пытаться сериализовать (XML)
int[] то все работает нормально. Если же иерархия сложнее (как приведено ниже) — т.е есть контейнерный объект, который имеет передаваемый тип как свойство, то вываливается исключение. Если поменять на
byte[] то исключения нет.
Есть классы:
[XmlRoot("XmlDataContainer")]
public class XmlDataContainer
{
private XmlDataItemContainers _items = new XmlDataItemContainers();
/// <summary>
/// Массив контейнеров
/// </summary>
[XmlArrayItem(typeof(XmlDataItemContainer), ElementName = "XmlDataItemContainer")]
public XmlDataItemContainers Items
{
get { return _items; }
set { _items = value; }
}
}
public class XmlDataItemContainers : List<XmlDataItemContainer>
{
/// <summary>
/// Empty constructor
/// </summary>
public XmlDataItemContainers() : base() { }
}
public class XmlDataItemContainer
{
private string _typeName = string.Empty;
private object _dataItem = string.Empty;
public string TypeName
{
get { return _typeName; }
set { _typeName = value; }
}
public object DataItem
{
get { return _dataItem; }
set { _dataItem = value; }
}
public XmlDataItemContainer() { }
public XmlDataItemContainer(string TypeName, object DataItem)
{
this.TypeName = TypeName;
this.DataItem = DataItem;
}
}
пытаюсь сделать так
int[] list = new int[3];
list[0] = 1;
list[1] = 2;
list[2] = 3;
XmlDataContainer result = new XmlDataContainer();
result.Items.Add(new XmlDataItemContainer(list.GetType().FullName, list));
XmlSerializer xmlSerializer = new XmlSerializer(typeof(XmlDataContainer));
StringWriter sw = new StringWriter();
xmlSerializer.Serialize(sw, result); // ВОТ ТУТ ОШИБКА
string xml = sw.ToString();
Исключение {"There was an error generating the XML document."}
InnerException: {"The type System.Int32[] may not be used in this context."}
А например другие объекты или string он глотает. Что не так?