gpt4 book ai didi

c# - 具有 protected 属性 setter 的对象 XmlSerialization

转载 作者:太空狗 更新时间:2023-10-29 17:29:57 25 4
gpt4 key购买 nike

这是我的对象


[Serializable()]
public class PersistentObject
{
public virtual int ID {
get { return id; }
protected set { id = value;}
}
...
}

当我尝试将其序列化为 xml 时,出现错误“The Property or indexer PersistentObject.ID cannot be used in this context because the set accessor is inaccessible”。如果二传手不存在,它工作正常。我想将此 ID 保持为序列化状态,而无需涉及 ID 上 [XmlIgnore()] 的 hacktastic 解决方案。如果我可以只在 setter 上添加 [XmlIgnore()],我会更愿意,但编译器会提示。有人对此有好的解决方案吗?

最佳答案

不幸的是,没有。 XmlSerializer 有一些东西……令人恼火。这是其中之一。选项:

  • 使用DataContractSerializer(支持protected等,但提供完整的xml控制)
  • [XmlIgnore] 注释 - 没问题
  • 实现 IXmlSerializable - 努力工作并且很容易出错
  • 取下 setter,并有一个单独的 protected 方法来设置值
  • 使用XmlSerializer 构造函数让您在运行时指定所有内容;大量工作/维护,您需要手动缓存序列化程序(否则它会创建大量动态程序集)

关于c# - 具有 protected 属性 setter 的对象 XmlSerialization,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1751448/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com