Silverlight使用对象图中的循环序列化对象

时间:2011-08-25 20:11:48

标签: silverlight wcf silverlight-4.0 datacontractserializer

在将对象发送到我的WCF服务时序列化对象时遇到问题。我的课程看起来像这样。

public class Foo
{
     public Bar Bar { get; set; }
}

public class Bar
{
    public Foo Bar { get; set; }
}

这会在我的对象图中产生一个循环。我已使用PreserveReferencesOperationBehavior在服务器端修复此问题。但是,当我尝试在Silverlight中序列化对象时,我仍然会收到错误。

虽然我可以用[DataContract(IsReference = true)]标记我的对象,但我不想使用这种方法,因为我有很多类,其中很多都有超过100个属性,我不想要将[DataMember]属性添加到每个属性。

还有其他方法告诉Silverlight保留引用吗?

如果它很重要,我正在使用EntityFramework 4和Code First。

1 个答案:

答案 0 :(得分:3)

序列化器的推荐DataContract行为可用于协助简单的DTO场景。如果您想“正确”执行此操作,则应使用DataContractDataMember属性。

当您发现除了最简单的场景之外还有其他任何场景时,您只需要正确地完成任务。处理循环引用的正确且唯一的方法是使用IsReference

这里的教训是,有用的神奇小精灵尘埃只是在你需要放入移植物之后才到目前为止。对不起,这不是你要找的答案。