Преобразование аргумента в функцию не удалось при вызове службы WCF - PullRequest
0 голосов
/ 28 мая 2019

У меня есть служба 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 Ответ

1 голос
/ 28 мая 2019

Исключением является то, что для метода CreateOrders вашего Service1Client необходима переменная типа OrderDTO [], а вы передаете List.

Пожалуйста, передайте переменную правильного типа, используйте ListOrders.ToArray для преобразования списка в массив.

Или, если вы хотите передать список, при добавлении ссылки на службу разрешите vs генерировать список для сбора.

enter image description here

При добавлении ссылки на службу с помощью vs вы можете нажать кнопку «Дополнительно» внизу, а затем настроить тип коллекции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...