У меня есть веб-сервис, который вызывает метод, который возвращает общий список класса 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 вместо общего списка. У меня есть подобный код для извлечения других общих списков, которые работают нормально, поэтому я действительно не могу понять, почему это действует по-другому.