经过长时间学习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")]//数据成员标记,支持别名定义。