Сериализация
От: _Kostya_  
Дата: 03.04.03 10:38
Оценка:
Доброго времени суток.

Я делаю класс реслизующий интерфейс IEnumerable и класс самого IEnumerator. Потом пытаюсь сериализовать экземпляр класса.

XmlSerializer xs=new XmlSerializer(typeof(FileCat));
xs.Serialize(fs, _FileCat);

и у меня вылетает исключение с текстом

"There was an error generating the XML document."

Что это может быть?
Re: Сериализация
От: VladD2 Российская Империя www.nemerle.org
Дата: 03.04.03 17:25
Оценка:
Здравствуйте, _Kostya_, Вы писали:

Опиши подробнее. Из такого описания понять картину тяжело.

Помечены ли классы атрибутом SerializableAttribute?
... << RSDN@Home 1.0 beta 6a >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: Сериализация
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 04.04.03 08:36
Оценка:
Здравствуйте, _Kostya_, Вы писали:

K>Я делаю класс реслизующий интерфейс IEnumerable и класс самого IEnumerator. Потом пытаюсь сериализовать экземпляр класса.


K>XmlSerializer xs=new XmlSerializer(typeof(FileCat));

K>xs.Serialize(fs, _FileCat);

K>и у меня вылетает исключение с текстом


K>"There was an error generating the XML document."


K>Что это может быть?


Запусти свой ехе не из студии и оно тебе покажет нормальную ошибку.
... << RSDN@Home 1.0 beta 6a >>
AVK Blog
Re[2]: Сериализация
От: _Kostya_  
Дата: 07.04.03 10:58
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, _Kostya_, Вы писали:


VD>Опиши подробнее. Из такого описания понять картину тяжело.


VD>Помечены ли классы атрибутом SerializableAttribute?



я уже решил эту проблему с помощью массива, но все-таки хочется узнать.

занчит так, есть классы


    public class CatFilesEnumarator: IEnumerator{
        ArrayList    _files;
        int            _current;

        public CatFilesEnumarator(ArrayList files){
            _files=files;
            _current=-1;
        }

        public object Current{
            get{
                if(_current<0 || _current>=_files.Count)
                    throw new Exception();
                return _files[_current];
            }
        }

        public bool MoveNext(){
            if(_current>=_files.Count)
                return false;
            _current++;
            return _current<_files.Count;
        }

        public void Reset(){
            _current=-1;
        }
    }

и

    public class Catalog: IEnumerable{
        ArrayList    _files;

        // несколько свойст помеченных [XmlIgnore]

        public Catalog(){
            _files=new ArrayList();
        }

        public IEnumerator GetEnumerator(){
            return new CatFilesEnumarator(_files);
        }
    }



потом делаю класс


    public class CatFilesContainer{
        public Catalog _cat;

        public void SaveToXml(string fileName){
            try{
                using(FileStream fs=new FileStream(fileName, FileMode.Create)){
                    XmlSerializer xml=new XmlSerializer(typeof(CatFilesContainer));
                    xml.Serialize(fs, this);
                }
            }catch(Exception e){
                MessageBox.Show(e.Message);
            }
        }
       }


Так можно сериализовать объект?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.