Подтвердить что ты не робот

Когда/Почему я не должен использовать IsReference = true для своих DataContracts?

Я понимаю, что такое свойство атрибута IsReference и что он делает. Но я не понимаю, почему/когда я должен не использовать его. Когда это плохая идея использовать IsReference = true?

Если моя служба wcf -.net в .net, есть ли веские причины для не установить IsReference = true?

4b9b3361

Ответ 1

Существует не менее двух причин, чтобы избежать использования IsReference:

Во-первых, это ограничение производительности, поскольку весь сериализатор должен выполнить проверку подлинности для каждого объекта, который должен быть сериализован.

Во-вторых, DataContractJsonSerializer не может сериализовать объекты, помеченные атрибутом IsReference. Поэтому, если вам нужно поддерживать Xml и Json, вы не сможете его использовать.

Кроме того, я не вижу причин не использовать его. В конце концов, это экономит некоторую драгоценную полосу пропускания!

Ответ 2

Я думаю, что ничего плохого не произойдет. Если ваш граф содержит более одной ссылки на один и тот же экземпляр объекта, установка этого атрибута в true приведет к уменьшению размера XML.

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

Однако я не уверен, почему он не включен по умолчанию.