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

标签 silverlight wcf silverlight-4.0 datacontractserializer

将对象发送到我的 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 场景。如果您想“正确”执行此操作,则应该使用 DataContractDataMember 属性。

当您发现除了最简单的场景之外还有其他情况时,您只需要正确地做事即可。处理循环引用的正确且唯一的方法是使用IsReference

这里的教训是,有用的魔法仙尘只能发挥这么大的作用,之后你只需要放入移植物即可。抱歉,这不是您正在寻找的答案。

关于Silverlight 在对象图中使用循环序列化对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7196601/

相关文章:

silverlight - 在 silverlight 中使列只读时出现问题

javascript - 如何通过 javascript 从 silverlight 媒体播放器 (player.xap) 获取播放状态?

wpf - 将鼠标悬停在 Silverlight 中的对象上时显示自定义工具提示?/弹出窗口

c# - 从一个 WCF 调用返回多个 FaultExceptions 的最佳方法是什么?

.NET 4 WCF 内存问题

angular - 尝试验证 Azure AD token 时收到错误 "IDX10511: Signature validation failed"

c# - Silverlight 4 自定义登录

c# - Silverlight - 文本 block 的宽度

Silverlight 4 单元测试

c# - Silverlight 用户控件的句柄