第四篇:用数据契约传递自定义数据对象
之前的演示中,我们一直都是在用string类型做参数和返回值,实际项目中肯定会传递自定义的数据类型。与WebService不同,WCF想传递自定义数据,必须要将其定义为数据契约。看一个例子:
- using System;
- using System.Runtime.Serialization; //注意加上这个引用,并引用相应的dll
- namespace Server
- {
- //用DataContract来标记本类是数据契约类
- [DataContract]
- public class UserEntity
- {
- //用DataMember来标识数据成员,没有此标识的属性不会作为数据契约的一部分
- [DataMember]
- public string Name { get; set; }
- [DataMember]
- public int Age { get; set; }
- }
- }
这个契约需要在客户端和服务端都存在,然后它就可以作为参数或返回值,在双方互相传递了,具体例子就省略了。
这里面有一点需要注意,数据契约与服务契约有一点小小的区别,数据契约要求在客户端和服务端必须保持完全一致的类名与命名空间,否则就无法传递数据,这与服务契约是不同的,服务契约放到客户端时允许换个命名空间。
组内有同事遇到过类似的问题,直接把数据契约类copy了一份到客户端之后改了命名空间,然后就一直取不到数据。 这里也引出另一个话题,推荐把各种契约(不含实现类)单独封装成一个dll,双方均引用它,结构上清晰,也避免出错。
今天这篇有点短,下回聊一聊用IIS做HOST。
本文转自 BoyTNT 51CTO博客,原文链接:http://blog.51cto.com/boytnt/800257,如需转载请自行联系原作者