.net 部分信任场景中DataContract中的集合
在设计用于序列化的数据契约时,有一点我很困惑 假设我有一个对象(例如客户),它公开了一个集合属性(例如AddressCollection命名地址)。框架设计指南规定,我不应该为属性公开一个公共mutator,即集合属性应该有一个get和no set,而是一个公共set方法(public void SetAddresses(IEnumerableaddresses)) 但是,如果我想序列化该对象,并且我预计我将处于部分信任环境中,那么我是否必须向属性添加公共setter,以便可以正确地反序列化它 此外,如果在序列化时集合中没有任何内容,并且由于DataContractSerializer没有调用默认构造函数,我很确定集合根本没有设置,因此保留为null。我可以使用onserialization属性来初始化集合,但是在部分信任场景中,该方法也必须是公共的,不是吗?这更难看 有人知道这里的适当指导吗.net 部分信任场景中DataContract中的集合,.net,wcf,serialization,datacontract,partial-trust,.net,Wcf,Serialization,Datacontract,Partial Trust,在设计用于序列化的数据契约时,有一点我很困惑 假设我有一个对象(例如客户),它公开了一个集合属性(例如AddressCollection命名地址)。框架设计指南规定,我不应该为属性公开一个公共mutator,即集合属性应该有一个get和no set,而是一个公共set方法(public void SetAddresses(IEnumerableaddresses)) 但是,如果我想序列化该对象,并且我预计我将处于部分信任环境中,那么我是否必须向属性添加公共setter,以便可以正确地反序列化它
多谢如果你真的想保护你的域模型,你可能需要考虑将一些数据传输对象添加到解决方案中。这样,您就可以序列化您需要的内容并在内部操作域。是的,这是经过尝试的,真正的面向对象思想与新工具相结合。:)我喜欢从一个角度来考虑它。我在尽可能接近mutator free的情况下设置了真正的业务对象,然后我使用了一组设计为序列化的DTO对象(公共属性、空白构造函数等)。这不是一个理想的解决方案,但我发现,如果尝试将非常丰富的对象集与序列化混合,它可能会变得丑陋。最好把它们分开