Hi,Jiecy
你的情况满特别的,数据契约的实现由客户端决定。通常情况都是WCF服务为主,服务定义操作契约和数据契约。这个也是面向服务应用程序的原则之一。(如果能改变的话,建议定义数据契约,是在没办法就放弃了。这个方式会导致很多问题)。
就针对你的问题,一起讨论一下,我确实没有遇到你这样的情况,看看能不能给你一些有帮助的建议~。
1.如果客户端的实体类已经确定,而且是List<T>泛型集合。
你只有让WCF服务来往客户端需要的服务上靠拢了。服务端定义一个和客户端实体类接近的数据契约,然后返回或者参数是你要使用的类型。
2.WCF里List<T>泛型集合结果在传输过程里会转化为数组,也就是客户端实际添加服务引用,调用服务的话,返回的结果为数组。而不是List集合。你在使用的时候,可以再做转化,或者客户端直接使用数组集合。
3.为了实现你的要求,建议你现实现一个简单的返回结果集合的操作。添加服务引用,查看一下客户端代码,reference.cs里有相关客户端饭序列化契约的本地定义,你看看List<T>结果集合和客户端如何处理的,找出对应的转换关系。然后仿照一下代码,写出你客户端要实现的操作。
WCF分布式开发步步为赢(8):使用数据集(DataSet)、数据表(DataTable)、集合(Collection)传递数据给出了代码,使用List<User>传递数据,User是数据契约,客户端对应生成的也有一个User类(客户端就不叫契约了),作用很想实体类了,仅仅是为了承载数据了。最后有可执行的代码,你可以参考一下。
如果你非要这样做的话,基本就是一个WCF开发流程倒序的过程。需要服务来配合客户端开发。
希望对你有帮助,有问题可以继续讨论。~