将对象发送到我的 WCF 服务时,我在序列化对象时遇到问题。我的类(class)看起来像这样。
public class Foo
{
public Bar Bar { get; set; }
}
public class Bar
{
public Foo Bar { get; set; }
}
这会导致我的对象图中出现循环。我已使用 PreserveReferencesOperationBehavior
在服务器端修复了此问题。但是,当我尝试在 Silverlight 中序列化对象时,仍然出现错误。
虽然我可以使用 [DataContract(IsReference = true)]
标记我的对象,但我不想使用此方法,因为我有大量的类,其中许多类都有超过 100 个属性,并且我不想向每个属性添加 [DataMember]
属性。
还有其他方法告诉 Silverlight 保留引用吗?
如果重要的话,我正在使用带有 Code First 的 EntityFramework 4。
最佳答案
序列化器的推断 DataContract 行为旨在协助简单的 DTO 场景。如果您想“正确”执行此操作,则应该使用 DataContract
和 DataMember
属性。
当您发现除了最简单的场景之外还有其他情况时,您只需要正确地做事即可。处理循环引用的正确且唯一的方法是使用IsReference
。
这里的教训是,有用的魔法仙尘只能发挥这么大的作用,之后你只需要放入移植物即可。抱歉,这不是您正在寻找的答案。
关于Silverlight 在对象图中使用循环序列化对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7196601/