避免在 WCF 数据协定中填充扩展属性

Posted

技术标签:

【中文标题】避免在 WCF 数据协定中填充扩展属性【英文标题】:Avoid populating Extended Properties in WCF data contracts 【发布时间】:2013-03-27 09:47:14 【问题描述】:

如何避免在我的数据合同中填充 ExtendedProperties 集合?

我的 WCF 服务正在从 XML 构建数据协定,并使用协定中没有的属性填充 ExtendedProperties。然后它们会被退回,我想避免这种情况。

清除ExtendedProperties 集合是一种简单的方法,但我一直在寻找一种更优雅的方法来做到这一点。

有什么帮助吗?

【问题讨论】:

【参考方案1】:

使用接受名为 ignoreExtensionDataObject 的布尔参数的其他 DataContractSerializer 构造函数之一是我发现完成此任务的最佳方法。

public DataContractSerializer(Type type, 
    IEnumerable<Type> knownTypes, 
    int maxItemsInObjectGraph, 
    bool ignoreExtensionDataObject, 
    bool preserveObjectReferences, 
    IDataContractSurrogate dataContractSurrogate);

【讨论】:

【参考方案2】:

来自 MSDN Forward-Compatible Data Contracts:

可以通过在 DataContractSerializer 构造函数中将 ignoreExtensionDataObject 设置为 true 或通过将 ServiceBehaviorAttribute 上的 IgnoreExtensionDataObject 属性设置为 true 来关闭往返功能。当此功能关闭时,反序列化程序将不会填充 ExtensionData 属性,并且序列化程序不会发出该属性的内容。

【讨论】:

以上是关于避免在 WCF 数据协定中填充扩展属性的主要内容,如果未能解决你的问题,请参考以下文章

WCF会话

使用临时表扩展属性批量更新

哪种列表/集合类型最适合在 WCF 数据协定中使用?

JavaScript 等效于 jQuery 的扩展方法

未捕获的类型错误:无法读取 null 的属性(正在读取“addEventListener”)Chrome 扩展

通过 WCF 调用传递继承的“数据协定”?