我理解属性属性IsReference是什么以及它在做什么。但我不明白为什么/何时不使用它。什么时候使用IsReference = true是个坏主意?
如果我的wcf服务是.net到.net,是否有充分的理由不设置IsReference = true?
答案 0 :(得分:11)
避免使用IsReference至少有两个理由:
首先存在性能损失,因为所有序列化程序必须对要序列化的每个对象执行身份检查。
其次,DataContractJsonSerializer无法序列化标记有IsReference属性的对象。因此,如果您需要同时支持Xml和Json,则无法使用它。
除此之外,我认为没有任何理由不使用它。毕竟它确实节省了一些宝贵的带宽!
答案 1 :(得分:1)
我认为不应该发生任何不好的事情。如果图形包含指向同一对象实例的多个链接,则将此属性设置为true将减小XML大小。
http://zamd.net/2008/05/20/datacontract-serializer-and-isreference-property/
但是我不确定为什么默认情况下没有启用它。