数据契约(DataContract)及序列化指定输出字段
2016-05-04 20:40
525 查看
服务契约定义了远程访问对象和可供调用的方法,数据契约则是服务端和客户端之间要传送的自定义数据类型。
上面这段代码把UserInfo类声明为DataContract,将UserName、Age、Location这3个属性声明为DataMember(数据成员)。Zodiac成员没有被声明为DataMember,因此在交换数据时,不会传输Zodiac的任何信息。
声明为DataMember的成员也可以自定义客户端可见的名称,例如:
一旦声明一个类型为DataContract,那么该类型就可以被序列化在服务端和客户端之间传送,如下所示。 [DataContract] public class UserInfo { //…. }
只有声明为DataContract的类型的对象可以被传送,且只有成员属性会被传递,成员方法不会被传递。WCF对声明为DataContract的类型提供更加细节的控制,可以把一个成员排除在序列化范围以外,也就是说,客户端程序不会获得被排除在外的成员的任何信息,包括定义和数据。默认情况下,所有的成员属性都被排除在外,因此需要把每一个要传送的成员声明为DataMember,如下所示。 [DataContract] public class UserInfo { [DataMember] public string UserName { get; set; } [DataMember] public int Age { get; set; } [DataMember] public string Location { get; set; } [IgnoreDataMember] public string Zodiac { get; set; } }
上面这段代码把UserInfo类声明为DataContract,将UserName、Age、Location这3个属性声明为DataMember(数据成员)。Zodiac成员没有被声明为DataMember,因此在交换数据时,不会传输Zodiac的任何信息。
声明为DataMember的成员也可以自定义客户端可见的名称,例如:
[DataMember(Name="Name")] public string UserName { get; set; }
相关文章推荐
- undefined reference to `cvLoadImage' 一个简单的解决方法
- 获取网络图片实现网络轮播
- Error retrieving parent for item: 安卓新建版本问题
- 线段树练习
- 易语言打开关闭
- 括号序列
- Unity5.0 AssetBundle 学习心得
- 理解OAuth 2.0
- Spark组件之GraphX学习16--最短路径ShortestPaths
- 易语言
- 易语言保存,另存为代码
- C经典 const与指针解析
- Java基础知识(数据类型、标识符、变量、运算符和流程控制语句)
- Android 中的UI第一篇:Common Layout
- (转)Doxygen文档生成工具
- 2016年5月04日
- Java数据类型转换 | int与String
- emWin实现BMP位图皮肤之Button篇
- 邻接矩阵图的创建
- Spring Security 4 Hello World 基于注解 和 XML 例子(带源码)