在设计用于序列化的 DataContracts 时,我一直很困惑。
假设我有一个对象(例如客户),它公开了一个集合属性(例如一个名为 Addresses 的 AddressCollection)。框架设计指南规定我不应该公开该属性的公共 mutator,即,集合属性应该有一个 get 和没有 set,而是一个公共 set 方法(public void SetAddresses(IEnumerable<Address>addresses))。
但是,如果我想序列化该对象,并且我预计我将处于部分信任环境中,我是否必须向该属性添加一个公共设置器以便它可以正确反序列化?
此外,如果集合在序列化时没有任何内容,并且由于 DataContractSerializer 没有调用默认构造函数,我很确定该集合根本没有设置并且保留为空。我可以使用 OnSerializing 属性来初始化集合,但是在部分信任的情况下,该方法也必须是公共的,不是吗?这更难看。
有谁知道这里的适当指导?
非常感谢。