【问题标题】:Add DataMember and DataContract onbuild在构建时添加 DataMember 和 DataContract
【发布时间】:2010-06-28 09:08:29
【问题描述】:

我们正在开发一个带有 Wcf 业务应用程序的 Silverlight。我们正在使用 Wcf DataContract 和 DataMember。

我们在所有字段上设置 DataMember,在所有类上设置 DataContract(IsReference=true)。我们能否以某种方式将编译器设置为在构建时自动添加 DataMember 和 DataContract,以便我们可以跳过添加 DataMember 和 DataContract? :)。 换句话说,我们是否可以设置一个规则,在所有类上添加 DataContract,在构建时在所有字段上添加 DataMember?但我们不会在我们的代码中看到任何变化。

【问题讨论】:

    标签: wcf silverlight


    【解决方案1】:

    如果您使用的是 3.5SP1,则无需指定任何属性 - 所有公共成员都将在不可序列化且未标记 DataContract/DataMember 的类型上进行序列化(如果完全标记,则自动-序列化被禁用)。可以通过 config + 自定义序列化程序设置来设置引用保存行为,例如 this

    【讨论】:

    • 好吧,如果我不使用 Silverlight [Serializeable],我会这样做的.
    • 此行为与 Serializable 无关,它在 Silverlight 3 和 4 中的工作方式与在 3.5SP1 上完全相同。
    • 好吧,我明天将测试这种方法:)
    • “参考保存行为可以通过配置+自定义序列化设置来设置,像这样。”。我发现这在 Silverlight 5 中不起作用。由于 DataContractSerializerOperationBehavior 类在 Silverlight 中是内部的,因此无法覆盖 CreateSerializer 方法以调用具有 preserveObjectReferences=true 的构造函数。相反,我们根据需要手动添加 [DataContract(IsReference=true)] 和 [DataMember] 属性。我想像 PostSharp 这样的东西可能是处理这个问题的唯一其他方法。
    猜你喜欢
    • 2016-11-04
    • 2011-08-03
    • 2011-06-17
    • 1970-01-01
    • 1970-01-01
    • 2012-01-23
    • 1970-01-01
    • 2016-02-18
    相关资源
    最近更新 更多