2010-06-22 58 views
2

當你創建一個WCF服務序列化數據VS VS合同什麼都在WCF服務

[DataContract] 
public class CompositeType 
{ 
    bool boolValue = true; 
    string stringValue = "Hello "; 

    [DataMember] 
    public bool BoolValue 
    { 
     get { return boolValue; } 
     set { boolValue = value; } 
    } 

    [DataMember] 
    public string StringValue 
    { 
     get { return stringValue; } 
     set { stringValue = value; } 
    } 
} 

當我使用DataContract一切正常,我將使用給出的入門實例。

當我使用Serializable時,實際的變量,無論是私有的還是公共的,都可以通過主機而不是屬性來實現。如果我使用NonSerialized,它會隱藏變量,但它也不會傳遞。我明白了,我想我明白爲什麼這些屬性沒有通過,因爲沒有什麼可以序列化的?那是對的嗎?

[Serializable] 
public class CompositeType 
{ 
    [NonSerialized] 
    bool boolValue = true; 
    [NonSerialized] 
    string stringValue = "Hello "; 


    public bool BoolValue 
    { 
     get { return boolValue; } 
     set { boolValue = value; } 
    } 


    public string StringValue 
    { 
     get { return stringValue; } 
     set { stringValue = value; } 
    } 
} 

如果我沒有提供任何屬性,類將按預期方式返回,而這我不明白?

我負責接收現有的業務對象並通過WCF與他們合作?看起來像我最好的選擇是讓他們獨自一人,而不是添加DataContract屬性。這是爲什麼?

回答

3

[DataContract]屬性是可選的。

爲什麼要用它呢?它允許您控制數據序列化的內容和方式 - 例如,排除哪些屬性將被包含在&中。

如果沒有它,那很好,但您很快就會發現,您需要更好地控制通過電線發送數據的方式和方式。

+0

很好的答案!但是,邁克,你不應該嘗試沒有DataContract,因爲它是面向WCF服務的。 ;) – maxbeaudoin 2010-06-22 20:28:07