2009-11-27 61 views
6

就是沒有DataContract類之間的差別屬性:DataContract和數據成員屬性 - 它們是如何影響類型

public class BankOperationResult 
{   
    public int CurrentAmount { get; set; } 
    public bool Success { get; set; } 
} 

與DataContract同一類屬性:

[DataContract] 
public class BankOperationResult 
{   
    [DataMember] 
    public int CurrentAmount { get; set; } 
    [DataMember] 
    public bool Success { get; set; } 
} 

我的意思是,WCF對待這兩種類型在編碼等時用不同的方式?

不管有沒有我的WCF服務工作的那些屬性...

謝謝你,帕維爾

回答

10

之前.NET 3.5 SP1,如果你沒有標註有數據成員的屬性特性它沒有暴露WSDL並沒有序列化。從.NET 3.5 SP1開始,DataContractSerializer將自動包含所有公共屬性,因此不再需要使用此屬性修飾它們。

+13

不幸的是,它在3.5 SP1的情況下並不那麼簡單,但這是基本的想法。如果沒有在您的類上定義任何DataContract或DataMember屬性,則所有字段*和*屬性都將被序列化爲XML,並且這包括私有的自動生成的後備存儲字段,用於表單'public int MyValue {get;組; }'並將它們命名爲' k__BackingField'。顯式添加DataContract和DataMember屬性將使DataContractSerializer放棄私有字段序列化。 – 2009-12-20 06:00:46

相關問題