调用 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添加服务引用时,可以点击底部的高级,然后可以配置集合类型。
我有一个具有此功能的 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添加服务引用时,可以点击底部的高级,然后可以配置集合类型。