Свойство IsReference в контракте данных

:Te[xplore]

Tab & amp; Исследуйте (делает вкладку перед генерацией окна браузера)

49
задан STiLeTT 26 May 2016 в 02:47
поделиться

2 ответа

Он определяет способ сериализации объектов, по умолчанию IsReference = false .

Настройка IsReference = true разрешает сериализацию деревьев объектов которые могут ссылаться друг на друга. Итак, со списком Сотрудников , каждый из которых имеет свойство для Менеджера (который также является Сотрудником ), ссылка на Менеджера для каждого Сотрудника можно удерживать вместо встраивания Менеджера в каждый узел Сотрудник :

IsReference = false даст:

<Employee> 
      <Manager i:nil=“true“ /> 
      <Name>Kenny</Name> 
</Employee> 
<Employee> 
      <Manager> 
            <Manager i:nil=“true“ /> 
            <Name>Kenny</Name> 
      </Manager>  
      <Name>Bob</Name> 
</Employee> 
<Employee> 
      <Manager> 
            <Manager i:nil=“true“ /> 
            <Name>Kenny</Name> 
      </Manager>  
      <Name>Alice</Name> 
</Employee> 

Где поскольку IsReference = true создаст:

<Employee z:Id=“i1“ xmlns:z=“http://schemas.microsoft.com/2003/10/Serialization/“> 
      <Manager i:nil=“true“ />  
      <Name>Kenny</Name> 
</Employee> 
<Employee z:Id=“i2“ xmlns:z=“http://schemas.microsoft.com/2003/10/Serialization/“> 
      <Manager z:Ref=“i1“ />  
      <Name>Bob</Name> 
</Employee> 
<Employee z:Id=“i3“ xmlns:z=“http://schemas.microsoft.com/2003/10/Serialization/“> 
      <Manager z:Ref=“i1“ />  
      <Name>Alice</Name> 
</Employee> 

Фрагменты, взятые из этого веб-журнала , в котором есть полное объяснение вместе с примерами сгенерированного XML с примененным свойством.

MSDN - Свойство IsReference предоставляет подробные сведения, а также ссылки на совместимые объекты .

63
ответ дан 7 November 2019 в 11:51
поделиться

Также IsReference не существует в .NET Framework 3.5. Таким образом, вы можете получить ошибки при использовании его с этой версией Framework - он существует только в 4.5, 4, 3.5 SP1 и Silverlight.

«Ошибка 297« System.Runtime.Serialization.DataContractAttribute »не содержит определения для« IsReference »»

3
ответ дан 7 November 2019 в 11:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: