可能重复:
WCF DataMember EmitDefaultValue on value type? (but set my own default value)
请考虑以下事项:
[DataContract]
public class MyType {
[DataMember(EmitDefaultValue = true)]
public string MyStr = "DefVal";
}
在上面的代码中,我可以指定分配后使用的默认值。
现在考虑以下事项:
[DataContract]
public class MyType {
[DataMember(EmitDefaultValue = true)]
public string MyStr {
get { ... }
set { ... }
}
}
如何在此处指定默认值???
三江源
答案 0 :(得分:0)
EmitDefaultValue
表示如果不指定值,它仍应添加具有.NET类型默认值的元素。在string
的情况下,它将类似于:
<MyStr xsi:nil="true" />
您的第一个示例未设置默认值。它设置了公共值,因为它是任何其他的赋值,如果您的传入消息包含null
,它将覆盖该初始值。
如果您需要使用任何特殊值而不是null(在序列化之前或反序列化之后),请使用带有[OnSerializing]
和[OnDeserialized]
属性的方法,如链接副本中所述。