none
XML сериализация списка RRS feed

  • Вопрос

  • Здравствуйте,

    Проблема в следующем. Есть некоторый класс 

    public class MyObject
    {
        public List<object> Items;
    }

    после XML сериализации "пустого" экземпляра этого класса, у которого Items = null получаю вполне ожидаемый пустой XML-файл.

    Почему же после его десериализации я получаю проинициализарованный Items ?

    Интересует вопрос как это победить. Нужных атрибутов не нашел.

    Спасибо

    ЗЫ тестовый проект:

        class Program
        {
            static void Main(string[] args)
            {
                Serialize();
                Deserialize();
            }
    
            private static void Serialize()
            {
                MyObject myObject = new MyObject();
                XmlSerializer sr = new XmlSerializer(typeof(MyObject));
                StreamWriter sw = new StreamWriter("example.xml");
                sr.Serialize(sw, myObject);
                sw.Close();            
            }
    
            private static void Deserialize()
            {
                XmlSerializer sr = new XmlSerializer(typeof(MyObject));
                FileStream fs = new FileStream("example.xml", FileMode.Open);
                MyObject myObject = (MyObject)sr.Deserialize(fs);
                fs.Close();
            }
        }
    

    29 августа 2012 г. 16:41

Ответы

  • Посмотрите аналогичный вопрос здесь и здесь.
    • Помечено в качестве ответа Abolmasov Dmitry 5 сентября 2012 г. 10:45
    29 августа 2012 г. 17:36
    Модератор
  • Привет,

    Насколько для вас критично различать null и пустой массив? Может просто если после десериализации получили пустой массив, то присвоить ему значение null и выполнять код дальше?

    Если возникают такие проблемы, то может у вас в архитектурном решении задачи что-то не так.


    Для связи [mail]

    • Предложено в качестве ответа YatajgaModerator 1 сентября 2012 г. 5:17
    • Помечено в качестве ответа Abolmasov Dmitry 5 сентября 2012 г. 10:45
    30 августа 2012 г. 10:21

Все ответы

  • Посмотрите аналогичный вопрос здесь и здесь.
    • Помечено в качестве ответа Abolmasov Dmitry 5 сентября 2012 г. 10:45
    29 августа 2012 г. 17:36
    Модератор
  • Спасибо. Однако нужного решения нет. По последней ссылке предлагают реализовать в сериализуемом поле только метод get. Это не подходит
    29 августа 2012 г. 18:52
  • Привет,

    Насколько для вас критично различать null и пустой массив? Может просто если после десериализации получили пустой массив, то присвоить ему значение null и выполнять код дальше?

    Если возникают такие проблемы, то может у вас в архитектурном решении задачи что-то не так.


    Для связи [mail]

    • Предложено в качестве ответа YatajgaModerator 1 сентября 2012 г. 5:17
    • Помечено в качестве ответа Abolmasov Dmitry 5 сентября 2012 г. 10:45
    30 августа 2012 г. 10:21