与XmlIgnore相关的XML序列化问题

时间:2011-05-09 05:30:04

标签: c# xml-serialization

序列化类时,如果注释了XmlIgnore属性,则会出错。当我取消注释XmlIgnore属性时,它工作正常。谁能告诉我为什么一个属性不能序列化?

1 个答案:

答案 0 :(得分:1)

通常情况下,它会在异常中非常清楚地告诉您原因 - 特别注意InnerException;但总结一下:

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

  • 必须是public
  • 它必须具有公共无参数构造函数
  • 可能不支持一些通用组合
  • 必须预期(将数据公开为object是不行的;例如SomeType的子类型必须提前公布,通常是通过{{1 }})
  • 必须具体(非[XmlInclude(...)]),或通过abstract定义具体实施

使用[XmlInclude(...)]会从考虑中删除类型,因此可以避免不符合xml的类型。您也可以针对这些案例尝试[XmlIgnore]