在将对象发送到我的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。
答案 0 :(得分:3)
序列化器的推荐DataContract行为可用于协助简单的DTO场景。如果您想“正确”执行此操作,则应使用DataContract
和DataMember
属性。
当您发现除了最简单的场景之外还有其他任何场景时,您只需要正确地完成任务。处理循环引用的正确且唯一的方法是使用IsReference
。
这里的教训是,有用的神奇小精灵尘埃只是在你需要放入移植物之后才到目前为止。对不起,这不是你要找的答案。