0

我被这个错误困住了..谁能指出我正确的方向在我的WCF服务中..我有一个定义如下的操作合同...

  [OperationContract]
  [FaultContract(typeof(ProductFault))]
  BusinessResponse<List<Product>> GetProductList(int id);

我正在从控制台应用程序调用上述方法,如下所示..

LookUpServiceClient client = new LookUpServiceClient();

BusinessResponse<List<Product>> response = client.GetProductList(2); 

但是线条client.GetProductList(2);在 VS2012 中用红色下划线。如果我将鼠标移到它上面..我得到错误显示为..

在此处输入图像描述

4

2 回答 2

2

默认情况下,WCF 代理生成为所有集合类型创建数组。因此,您可以通过将变量分配更改为此来解决此问题

BusinessResponse<Product[]> reponse = client.GetProductList(2);

您还可以通过在高级设置中选择集合类型(Array、List、ArrayList 等)来更改代理生成的默认集合类型。

于 2013-08-16T19:02:14.837 回答
1

正如@Dylan Meaodr所指出的,WCF 代理生成为所有集合类型创建数组。

无论哪种方式都是change it to array assignment in your client project

或者

你可以告诉service to use Generic list by configuring the service.

详细信息可以在这里找到。从那里引用-

您可以通过在添加引用时单击高级按钮来指定要使用通用列表而不是数组,或者您可以右键单击服务引用并选择配置以将其更改到位。

原因是 WCF 将通用列表序列化为数组以通过网络发送。该配置只是告诉 svcutil 创建一个代理,将它们转换回通用列表以方便您使用。

如果您Service reference要向项目中添加一个,请右键单击您的服务并单击配置,这将为您打开配置窗口,您可以在其中更改集合类型 -

在此处输入图像描述

于 2013-08-16T19:23:17.890 回答