何时/为什么我不应该在我的DataContracts上使用IsReference = true?

时间:2012-01-16 07:07:57

标签: wcf datacontract datacontractserializer

我理解属性属性IsReference是什么以及它在做什么。但我不明白为什么/何时使用它。什么时候使用IsReference = true是个坏主意?

如果我的wcf服务是.net到.net,是否有充分的理由设置IsReference = true?

2 个答案:

答案 0 :(得分:11)

避免使用IsReference至少有两个理由:

首先存在性能损失,因为所有序列化程序必须对要序列化的每个对象执行身份检查。

其次,DataContractJsonSerializer无法序列化标记有IsReference属性的对象。因此,如果您需要同时支持Xml和Json,则无法使用它。

除此之外,我认为没有任何理由不使用它。毕竟它确实节省了一些宝贵的带宽!

答案 1 :(得分:1)

我认为不应该发生任何不好的事情。如果图形包含指向同一对象实例的多个链接,则将此属性设置为true将减小XML大小。

http://zamd.net/2008/05/20/datacontract-serializer-and-isreference-property/

但是我不确定为什么默认情况下没有启用它。