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

Function conversion of argument did not succeed when calling WCF service

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

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

这是它的代码

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

classOrderDTO定义如下:

[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;
    }

当我编译时出现了这些错误:

The best overloaded method match for 'PortfolioView.PortfolioService.Service1Client.CreateOrders(PortfolioView.PortfolioService.OrderDTO[])' has some invalid arguments

Cannot convert from 'System.Collections.Generic.List' to 'PortfolioView.PortfolioService.OrderDTO[]'

这里有什么问题,因为我从我的应用程序发送了一个 OrderDTO 的列表,而在 WCF 中我声明了一个 OrderDTO 的列表作为参数。我应该使用什么转换?

提前致谢。

从你的异常来看,你的 Service1Client 方法 CreateOrders 需要一个类型为 OrderDTO[] 的变量,而你传递的是 List。

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

或者如果要传递List,请在添加服务引用的时候让vs生成List进行采集

使用vs添加服务引用时,可以点击底部的高级,然后可以配置集合类型。