调用WCF服务时,参数的函数转换未成功

时间:2019-05-27 23:36:45

标签: wpf list wcf type-conversion

我有一个具有此功能的WCF服务:

namespace PortfolioSerivce
{
    [ServiceContract]
    public interface IService1
    {
         [OperationContract]
         bool CreateOrders(List<OrderDTO> ListOrder);
    }
}

及其代码

    public bool CreateOrders(List<OrderDTO> ListOrder)
    {
        return true;
    }

OrderDTO的定义如下:

[DataContract]
public class OrderDTO
{
    [DataMember]
    public int Id { get; set; }

    [DataMember]        
    public char OrderType { get; set; }

    [DataMember]
    public float OrderedQty { get; set; }

    [DataMember]
    public float PreUNitCost { get; set; }

    [DataMember]
    public float PostUnitCost { get; set; }

    [DataMember]
    public float MarketPrice { get; set; }

    [DataMember]
    public float ClientId { get; set; }

    [DataMember]
    public float SecurityId { get; set; }
}

在WPF中,我有一个函数希望将列表传递给WCF函数:

    internal bool RemoteCreateOrders(List<Position> securityMarketDTO)
    {
        List<OrderDTO> ListOrders = new List<OrderDTO>();
        Tools.MyRemoteService.CreateOrders((List<OrderDTO>)ListOrders);
        return true;
    }

我编译时遇到了这些错误:

  

“ PortfolioView.PortfolioService.Service1Client.CreateOrders(PortfolioView.PortfolioService.OrderDTO [])”的最佳重载方法匹配具有一些无效参数

     

无法从“ System.Collections.Generic.List”转换为“ PortfolioView.PortfolioService.OrderDTO []”

这是什么问题,当我从应用程序发送OrderDTO列表时,在WCF中,我将OrderDTO列表声明为参数。我应该使用什么转换?

谢谢。

1 个答案:

答案 0 :(得分:1)

从您的异常中,在传递列表时,Service1Client的方法CreateOrders需要一个类型为OrderDTO []的变量。

请传递正确类型的变量,使用ListOrders.ToArray将列表转换为数组。

或者,如果要传递列表,请在添加服务引用时让vs生成要收集的列表。

enter image description here

使用vs添加服务引用时,可以单击底部的“高级”,然后可以配置“收藏夹”类型。