知識寶典之介紹WCF數據契約
經過長時間學習WCF,于是和大家分享一下,看完本文你肯定有不少收獲,希望本文能教會你更多東西。在WCF服務編程中我們知道,WCF數據契約定義了遠程訪問對象和可供調用的服務操作方法,WCF數據契約則是定義服務端和客戶端之間要傳送的自定義數據類型。在 WCF項目中,聲明一個類型DataContract,那么該類型就可以被序列化在服務端和客戶端之間傳送。
#T#類只有聲明為DataContract,該類型的對象才可以被傳送,且只有類的屬性會被傳送,需要在屬性生命前加DataMember聲明,這樣該屬性就可以被序列化傳送。默認情況屬性是不可傳遞的。類的方法不會被傳送。WCF數據契約的類型可以進行更加細節的控制,可以把一個成員屬性排除在序列化范圍以外,客戶端程序不會獲得被排除在外的成員屬性的任何信息,包括定義和數據。代碼如下:
- [DataContract]//數據契約屬性聲明
- class MyDataContract
- {
- [DataMember(Name = "MyName")]//數據成員標記,支持別名定義
- public string Name
- {
- get;
- set;
- }
- [DataMember(Name = "MyEmail")]//數據成員標記,支持別名定義
- public string Email
- {
- get;
- set;
- }
- [DataMember]//數據成員標記
- public string Mobile
- {
- get;
- set;
- }
- //沒有[DataMember]聲明,不會被序列化
- public string Address
- {
- get;
- set;
- }
- }
- }
上面類聲明為DataContract,部分屬性聲明為DataMember(數據成員)。可以序列化為客戶端傳送。 Address成員屬性沒有被聲明為DataMember,因此在交換數據時,不會傳輸Address的任何信息。聲明為DataMember的成員也可以自定義客戶端可見的別名 如:
- [DataMember(Name = "MyName")]//數據成員標記,支持別名定義。