У меня есть служба 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;
}
Когда я компилирую, я получаю эти ошибки:
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. Какое преобразование следует использовать?
Заранее спасибо.





Из вашего исключения вашему методу CreateOrders Service1Client нужна переменная типа OrderDTO[], пока вы передаете List.
Пожалуйста, передайте переменную правильного типа, используйте ListOrders.ToArray для преобразования списка в массив.
Или, если вы хотите передать список, позвольте vs сгенерировать список для сбора при добавлении ссылки на службу.
При добавлении ссылки на службу с помощью vs вы можете щелкнуть «Дополнительно» внизу, а затем настроить тип коллекции.
Но из кода, который я написал
public bool CreateOrders(List<OrderDTO> ListOrder), я не определил таблицу. Я не понимал;