递归对象未通过WCF传递

时间:2011-11-03 20:09:25

标签: wcf

我将解释我的班级设计

public class A
{
   public Ilist<B> Something { get; set; }
}

public class B
{
   public A ParentA { get; set; }
}

现在我试图通过WCF传递A,它只是抛出一个异常。是否有一些属性我需要设置才能使其工作或者在WCF中根本不可能

2 个答案:

答案 0 :(得分:3)

尝试使用以下方法装饰A类:

[DataContract(IsReference = true)]

B级只有:

[DataContract]

这将告诉WCF您将在服务中使用这些类型,IsReference将处理循环引用问题以及减少邮件大小。您也可以尝试将IsReference放在B上,而不是放在A上 - 我不记得它的确如何表现在我的头顶。

答案 1 :(得分:0)

您需要使用DataContracts

[DataContract]
[KnownType(typeof(B))]
class A
{
   public Ilist<B> Something { get; set; }
}

[DataContract]
class B
{
   public A ParentA { get; set; }
}