WCF类型转换

时间:2013-08-16 18:56:53

标签: c# wcf list generics operation-contract

我遇到了这个错误..任何人都指出我正确的方向 在我的WCF服务中..我有一个operationcontract,定义如下......

  [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中用红色加下划线。如果我将鼠标移到它上面..我的错误显示为..

enter image description here

2 个答案:

答案 0 :(得分:2)

默认情况下,WCF代理生成会为所有集合类型创建数组。因此,您可以通过将变量赋值更改为此

来解决此问题
BusinessResponse<Product[]> reponse = client.GetProductList(2);

您还可以通过在高级设置(数组,列表,数组列表等)中选择集合类型来更改代理生成的默认集合类型

答案 1 :(得分:1)

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

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

OR

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

可以找到详细信息here。引自那里 -

  

您可以指定要使用通用列表而不是   添加引用时单击高级按钮的数组,或者您   可以右键单击服务引用并选择configure to   改变它。

     

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

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

enter image description here