Tan*_*ner 63
它默认确定对象的序列化方式IsReference=false.
设置IsReference = true允许序列化可以相互引用的对象树.因此,Employees对于每个都具有Manager(也是一个Employee)属性的列表,可以保持对Managerfor 的引用Employee而不是嵌入Manager每个Employee节点:
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>
Run Code Online (Sandbox Code Playgroud)
凡为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>
Run Code Online (Sandbox Code Playgroud)
从此博客中获取的片段,其中包含完整说明以及应用了属性的生成XML的示例.
MSDN - IsReference属性提供详细信息以及可互操作对象引用.