Silverlight: метод Webservice, возвращающий ObservableCollection вместо общего списка - PullRequest
1 голос
/ 14 апреля 2009

У меня есть веб-сервис, который вызывает метод, который возвращает общий список класса BodyPartUrls, например:

public List<BodyPartUrls> getCharacterClassBody(int characterClassID)
{
    var bpulst = new List<BodyPartUrls>();
    var iqcb = ydc.ClassBodies.Where(cb =>  cb.characterClassID == characterClassID);

    foreach (var icb in iqcb)
    {
        var bpu = new BodyPartUrls();
        bpu.bodyPartName = icb.BodyPart.bodyPartName;
        bpu.bodyName = icb.Body.bodyName;
        bpu.puppetID = characterClassID;
        bpulst.Add(bpu);
    }
    return bpulst;
}

BodyPartUrls состоит только из строковых и целочисленных свойств, обратите внимание, что ydc ссылается на текстовый текст. Этот код в веб-сервисе:

    [WebMethod]
    public List<BodyPartUrls> getCharacterClassBody(int characterClassID)
    {
       return b.getCharacterClassBody(characterClassID);
    }

Теперь, чтобы вызвать метод в silverlight, я использовал следующий код:

public void initialiseBodiesSoapClientClient()
{
    string webServiceUrl = pu.GetUrlForResource("Bodies.asmx");
    System.ServiceModel.BasicHttpBinding binding = new System.ServiceModel.BasicHttpBinding();
    EndpointAddress endpoint = new EndpointAddress(webServiceUrl);
    bsc = new BodiesRef.BodiesSoapClient(binding, endpoint);
    bsc.getCharacterClassBodyCompleted += new EventHandler<Yambushi.BodiesRef.getCharacterClassBodyCompletedEventArgs>(bsc_getCharacterClassBodyCompleted);
}

Метод pu.GetUrlForResource get - это URL, где размещен веб-сервис, следующий метод bsc_getCharacterClassBodyCompleted:

void bsc_getCharacterClassBodyCompleted(object sender, Yambushi.BodiesRef.getCharacterClassBodyCompletedEventArgs e)
{
   bpulist = e.Result;
}

bpulist - это общий список BodyPartUrls, по какой-то причине e.Result возвращает ObservableCollection вместо общего списка. У меня есть подобный код для извлечения других общих списков, которые работают нормально, поэтому я действительно не могу понять, почему это действует по-другому.

1 Ответ

5 голосов
/ 14 апреля 2009

Нажмите Настроить справочник услуг. В разделе «Тип данных» вы можете выбрать тип возвращаемых коллекций или словарей.

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