【问题标题】:WCF type conversionWCF 类型转换
【发布时间】:2013-08-16 18:56:53
【问题描述】:

我被这个错误困住了..谁能指出我正确的方向 在我的 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 中用红色下划线。如果我将鼠标移到它上面..我得到错误显示为..

【问题讨论】:

    标签: c# wcf list generics operation-contract


    【解决方案1】:

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

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

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

    【讨论】:

    • 非常感谢。我花了将近 3 个小时试图探索自己的解决方案。再次感谢..感谢您的快速回复。
    【解决方案2】:

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

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

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

    详情请见here。从那里引用-

    您可以指定要使用通用列表而不是 通过在添加引用时单击高级按钮来创建数组,或者您 可以右键单击服务参考并选择配置为 就地改变它。

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

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

    【讨论】:

    • 谢谢我也这样做了
    • 更新了您的服务或客户端代码的配置以期望数组?
    猜你喜欢
    • 2011-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多