C# XmlIgnore与XML序列化相关的问题

C# XmlIgnore与XML序列化相关的问题,c#,xml-serialization,C#,Xml Serialization,序列化类时,如果对XmlIgnore属性进行注释,则会出现错误。当我取消注释XmlIgnore属性时,它工作正常。有人能告诉我为什么属性不能序列化吗?通常,它会在异常中非常清楚地告诉您为什么—特别是查看InnerException;然而,概括而言: 通过XmlSerializer可序列化的自定义类型SomeType(作为根对象或通过属性,即public SomeType MemberName{get;set;}) 它必须是public 它必须有一个公共的无参数构造函数 可能不支持一些通用组合

序列化类时,如果对XmlIgnore属性进行注释,则会出现错误。当我取消注释XmlIgnore属性时,它工作正常。有人能告诉我为什么属性不能序列化吗?

通常,它会在异常中非常清楚地告诉您为什么—特别是查看InnerException;然而,概括而言:

通过
XmlSerializer
可序列化的自定义类型
SomeType
(作为根对象或通过属性,即
public SomeType MemberName{get;set;}

  • 它必须是
    public
  • 它必须有一个公共的无参数构造函数
  • 可能不支持一些通用组合
  • 它必须是预期的(例如,将数据作为
    对象
    公开是不可能的;必须提前公布
    SomeType
    的子类型,通常是通过
    [xmlclude(…)]
  • 它必须是具体的(非抽象的),或者通过
    [xmlclude(…)]
    定义具体的实现

使用
[XmlIgnore]
将类型从考虑范围中删除,因此可以避免不支持xml的类型。您也可以在这些情况下尝试
IXmlSerializable

pro提示:无论何时谈论错误,都要包括错误详细信息