WCF - 没有DataMemberAttribute的EmitDefaultValue

时间:2011-05-28 16:58:43

标签: wcf serialization

我正在使用无属性的DataContract序列化(.NET 3.5 SP 1)。

我希望将所有DataContracts更改为EmitDefaultValuefalse

我怎么能做到这一点?

2 个答案:

答案 0 :(得分:4)

如果您想使用适用于某个媒体资源的EmitDefaultValue property on the DataMemberAttribute,那么您必须将DataContractAttribute应用于该类型。

这有一个令人遗憾的副作用,即必须将DataMemberAttribute属性放在您希望序列化的所有类型的成员上(在您使用无属性的数据合同序列化之前假设的那些)由于使用属性时,数据合同序列化的性质是全部的。

答案 1 :(得分:0)

您可以尝试实施ISeriaizable interface

在这种情况下,DataContractSerializer会调用您的代码来执行映射,从而为您提供完全控制。