在网络服务中我说
public List<Customer> GetCustomers()
{
PR1Entities dc = new PR1Entities();
var q = (from x in dc.Customers
select x).ToList();
return q;
}
(客户是实体对象)
然后我在添加服务时生成代理..在reference.cd中它说
public wcf1.ServiceReference1.Customer[] GetCustomers() {
return base.Channel.GetCustomers();
}
为什么是阵列?我要了一份清单。
帮助。
答案 0 :(得分:28)
右键单击服务引用,然后选择“配置服务引用”。
在Collection Type下拉列表中,选择System.Collections.Generic.List。
类型我认为默认为Array的原因是它在序列化时最兼容。如果您从识别更复杂的东西中获取服务,则可以按照我的提法进行配置。
答案 1 :(得分:4)
右键点击您的服务参考 - &gt;配置服务参考 - &gt;在“数据类型”下,将“集合类型”更改为System.Collections.ArrayList
或您希望数组反序列化为的任何类型。
您的列表被序列化为一个数组(服务器端)。您可以选择如何反序列化(客户端)。
答案 2 :(得分:2)
我已将我的设置设置为System.Collections.Generic.List,但是当我执行更新服务参考时,我生成的代理突然返回数组类型!怎么了?
答案 3 :(得分:1)
因为这就是列表序列化的方式。客户端的Customer
类是从服务元数据生成的,它有效地描述了它的序列化方式,而不是最初定义的方式。如果您的原始Customer
类可用,则可以指定在生成服务引用时在客户端代码中重复使用它,然后它将作为List<T>
进行。