避免在 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 数据协定中填充扩展属性的主要内容,如果未能解决你的问题,请参考以下文章