2011-06-06 84 views
0

可能重复:
WCF DataMember EmitDefaultValue on value type? (but set my own default value)将EmitDefaultValue应用于属性。如何指定默认值?

考虑以下几点:

[DataContract] 
public class MyType { 
    [DataMember(EmitDefaultValue = true)] 
    public string MyStr = "DefVal"; 
} 

在上面的代码,我可以指定转让后,使用默认值。

现在考虑以下几点:

[DataContract] 
public class MyType { 
    [DataMember(EmitDefaultValue = true)] 
    public string MyStr { 
     get { ... } 
     set { ... } 
    } 
} 

我怎么能在这里指定的默认值???

三江源

回答

0

EmitDefaultValue说,如果你不指定值,应该还是与.NET类型添加默认值的元素。在string的情况下,它将类似于:

<MyStr xsi:nil="true" /> 

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

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