【问题标题】:Applying EmitDefaultValue to a property. How to specify the default value? [duplicate]将 EmitDefaultValue 应用于属性。如何指定默认值? [复制]
【发布时间】:2011-06-07 01:13:49
【问题描述】:

可能重复:
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 { ... }
   }
}

这里如何指定默认值???

谢谢

【问题讨论】:

    标签: c# .net wcf web-services attributes


    【解决方案1】:

    EmitDefaultValue 表示如果您不指定该值,它仍应添加具有 .NET 类型默认值的元素。如果是string,它将类似于:

    <MyStr xsi:nil="true" />
    

    您的第一个示例没有设置默认值。它设置公共值,因为它与任何其他值一样是赋值,如果您的传入消息包含null,它将覆盖该初始值。

    如果您需要使用任何特殊值来代替 null(在序列化之前或反序列化之后),请使用带有 [OnSerializing][OnDeserialized] 属性的方法,如链接副本中所述。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-02-02
      • 2013-05-20
      • 2012-03-04
      • 2011-01-17
      • 1970-01-01
      • 2021-03-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多