2011-06-06 83 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]屬性修飾的方法。