Проблемы с сериализацией
От: mr_kern Швейцария  
Дата: 11.08.06 13:50
Оценка:
Если пытаться сериализовать (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 он глотает. Что не так?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.