我有一个带有循环引用的 WCF 合同。对于简单的父子关系,使用 .NET 3.5SP1 或更高版本的解决方案非常简单 - DataContract 的 IsReference 属性(此页面有很好的解释)。
但是,我的关系有三个层次:祖父母 <-> 父母 <-> 孩子。“祖父母”有很多“父母”,“父母”有很多“孩子”。为了让祖父母 <-> 父母关系正常工作,我在祖父母上设置了 IsReference - 没问题。但是为了使父 <-> 子关系正常工作,“父”也需要是 IsReference。一旦我设置了它,我的服务就会失败 - 我想问题是当“祖父母”和“父母”都是 IsReference 时,序列化程序不知道该怎么做。
有什么方法可以用 IsReference 解决这个问题,还是我需要寻求不同的解决方案?