这是我的对象
[Serializable()]
public class PersistentObject
{
public virtual int ID {
get { return id; }
protected set { id = value;}
}
...
}
当我尝试将其序列化为xml时,出现错误“由于无法访问集合访问器,因此无法在此上下文中使用Property或索引器PersistentObject.ID”。如果 setter 不存在,则可以正常工作。我想将此ID保持序列化,而没有涉及ID上[XmlIgnore()]的骇客解决方案。我希望仅在setter上添加[XmlIgnore()],但编译器会提示。有人对此有很好的解决方案吗?
最佳答案
抱歉不行。 XmlSerializer
有一些令人讨厌的东西。这就是其中之一。选项:
DataContractSerializer
(它支持protected
等,但是不提供完整的xml控制)[XmlIgnore]
注释-IXmlSerializable
-努力工作,很容易出错protected
方法设置值XmlSerializer
构造函数,该构造函数可让您在运行时指定所有内容;大量的工作/维护,并且您需要手动缓存序列化程序(否则它将创建大量的动态程序集)关于c# - 具有 protected 属性 setter 的Object Xml序列化,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1751448/