Обычно, он скажет вам, почему очень четко в исключении - посмотрите, в частности, на InnerException; однако, подведем итог:
Для пользовательского типа SomeType
, который можно сериализовать через XmlSerializer
(либо в качестве корневого объекта, либо через свойство, т.е. public SomeType MemberName {get;set;}
)
- должно быть
public
- он должен иметь открытый конструктор без параметров
- некоторые общие комбинации могут не поддерживаться
- это должно быть ожидаемое (например, предоставление данных как
object
запрещено, подтипы SomeType
должны быть объявлены заранее, обычно через [XmlInclude(...)]
)
- он должен быть конкретным (не
abstract
) или иметь конкретные реализации, определенные через [XmlInclude(...)]
Использование [XmlIgnore]
удаляет тип из рассмотрения, поэтому можно избежать типов, не поддерживающих xml. Вы также можете попробовать IXmlSerializable
для этих случаев