将EmitDefaultValue应用于属性.如何指定默认值



可能重复:
值类型上的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]属性修饰的方法,如链接副本中所述。

最新更新