Silverlight:Webservice方法返回ObservableCollection而不是Generic List

时间:2009-04-13 20:17:10

标签: silverlight web-services

我有一个webservice,它调用一个返回类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引用的是datacontext。这是webservice中的代码:

    [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获取托管webservice的网址,以下是方法bsc_getCharacterClassBodyCompleted

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

bpulist是BodyPartUrls的通用列表,由于某种原因e.Result返回ObservableCollection而不是通用列表。我有类似的代码来检索其他工作正常的通用列表,所以我真的不明白为什么这种行为不同。

1 个答案:

答案 0 :(得分:5)

单击“配置服务引用”。在“数据类型”部分下,您可以选择要将集合或词典返回的类型。