将EmitDefaultValue应用于属性.如何指定默认值
本文关键字:何指定 默认值 属性 EmitDefaultValue 应用于 | 更新日期: 2023-09-27 17:58:26
可能重复:
值类型上的WCF DataMember EmitDefaultValue?(但设置我自己的默认值)
考虑以下内容:
[DataContract]
public class MyType {
[DataMember(EmitDefaultValue = true)]
public string MyStr = "DefVal";
}
在上面的代码中,我可以指定赋值后使用的默认值。
现在考虑以下内容:
[DataContract]
public class MyType {
[DataMember(EmitDefaultValue = true)]
public string MyStr {
get { ... }
set { ... }
}
}
如何在此处指定默认值???
感谢
EmitDefaultValue
表示,如果您不指定值,它仍然应该添加具有.NET类型默认值的元素。在string
的情况下,它将类似于:
<MyStr xsi:nil="true" />
您的第一个示例没有设置默认值。它设置公共值,因为它和其他任何消息一样是赋值,如果传入消息包含null
,它将覆盖该初始值。
如果需要使用任何特殊值而不是null(在序列化之前或反序列化之后),请使用用[OnSerializing]
和[OnDeserialized]
属性修饰的方法,如链接副本中所述。