Проблема, связанная с сериализацией XML с XmlIgnore - PullRequest
0 голосов
/ 09 мая 2011

При сериализации класса я получаю ошибку, если закомментирован атрибут XmlIgnore.Когда я раскомментирую атрибут XmlIgnore, он работает нормально.Может кто-нибудь сказать мне, почему свойство не может быть сериализуемым?

1 Ответ

1 голос
/ 09 мая 2011

Обычно, он скажет вам, почему очень четко в исключении - посмотрите, в частности, на InnerException; однако, подведем итог:

Для пользовательского типа SomeType, который можно сериализовать через XmlSerializer (либо в качестве корневого объекта, либо через свойство, т.е. public SomeType MemberName {get;set;})

  • должно быть public
  • он должен иметь открытый конструктор без параметров
  • некоторые общие комбинации могут не поддерживаться
  • это должно быть ожидаемое (например, предоставление данных как object запрещено, подтипы SomeType должны быть объявлены заранее, обычно через [XmlInclude(...)])
  • он должен быть конкретным (не abstract) или иметь конкретные реализации, определенные через [XmlInclude(...)]

Использование [XmlIgnore] удаляет тип из рассмотрения, поэтому можно избежать типов, не поддерживающих xml. Вы также можете попробовать IXmlSerializable для этих случаев

...