有没有办法在运行时为.NET中的DataContractSerializer有条件地指定EmitDefaultValue?有没有解决方法?
例如,我很好奇是否可以将EmitDefaultValue = false用于WCF序列化,但我希望能够为外部接口生成的XML使用EmitDefaultValue = true,例如print。
答案 0 :(得分:1)
嗯,您可能有两个选项是使用data contract surrogate或IObjectReference。我认为这些对你来说都是过度的,但是如果你真的,真的想支持你的这种情况,也许这是你愿意做出的牺牲。请注意,使用它们对性能,互操作性,模式暴露等也有重要意义。
我还想指出,即使我知道共同的动机是什么,但由于多种原因,我不建议您尝试做的事情 - 假的EmitDefaultValue。见Why is using [DataMember(EmitDefaultValue = false)] not recommended?