Не удается передать List<Guid> в качестве параметра веб-службе в SL3

У меня есть следующий веб-метод:

namespace MessageService{
...
    [WebMethod]
    public ServiceReturnCodes SetMsg(List<Guid> Ids, DateTime processDateTime)
    {
        BL.SetMsg(Ids, DateTime.Now);   
    }
}

Но когда я вызываю этот метод:

public List<Guid> Ids = new List<Guid>();
...
service.SetMsg(Ids, DateTime.Now);

Я получаю следующую ошибку: Аргумент '1': невозможно преобразовать из 'System.Collections.Generic.List' в 'MessageWeb.MessageService.ArrayOfGuid'. Я не могу понять, что ArrayOfGuid и почему он пытается конвертировать.

4 ответа

Решение

Я просто мог использовать ArrayOfGuid введите, чтобы создать список и передать его в качестве параметра:

ArrayOfGuid Ids = null;
Ids.Add(Id);
....
service.SetMsg(Ids, DateTime.Now);

Привет: можно добавить метод AddRange для добавления элементов в список и из списка:

[WebMethod]
public ServiceReturnCodes SetMsg(List<Guid> Ids, DateTime processDateTime)
{
    ArrayOfGuid _Ids = new List<Guid>();
    _Ids.AddRange(Ids);
    BL.SetMsg(_Ids, DateTime.Now);   
}

Может быть, вы должны преобразовать его в массив с помощью

service.SetMsg(Ids.ToArray(), DateTime.Now);

Я верю, что вы обнаружите, что ArrayOfGuid является List<Guid>, Посмотрите в Reference.cs. Вот что у меня:

public class ArrayOfGuid : System.Collections.Generic.List<System.Guid> {}

До сих пор я мог использовать функцию частичного класса, чтобы немного упростить передачу List<Guid>:

используя Систему; using System.Collections.Generic;

namespace ConsoleApplication1.MessageServiceProxy
{
    partial class ArrayOfGuid
    {
        public ArrayOfGuid()
        {
        }

        public ArrayOfGuid(IEnumerable<Guid> guids) : base(guids)
        {
        }
    }
}

Это позволяет вам пройти new ArrayOfGuid(yourListOfGuid),

Другие вопросы по тегам