开发者

ObservableCollection vs Normal List for Async Webservices Call

开发者 https://www.devze.com 2023-03-13 16:27 出处:网络
All, I was just implementing a Webservices method that needs to take as an argument a list of objects. On the client side, I tried to call this passing it a list of the objects, but the compiler comp

All,

I was just implementing a Webservices method that needs to take as an argument a list of objects. On the client side, I tried to call this passing it a list of the objects, but the compiler complained saying that it needed an ObservableCollection instead. Here is the code:

Server Side

[WebMethod]
public void SaveMarks(List<CompletedMark> marks)
{
    // TODO: IMPLEMENT SAVING THE MARKS
}

Client Side

private void SaveMarks()
{
    ObservableCollection<CompletedMark> marks = new ObservableCollection<CompletedMark>();
    //List<CompletedMark> marks = new List<CompletedMark>();

    foreach (SelectedField elem in SelectedFields)
    {
        marks.Add(new CompletedMark
                      {
                          FormId = curFormId,
                          QuestionId = elem.Qid,
                          XPos = Canvas.GetLeft(elem.assocGrid),
                          YPos = Canvas.GetTop(elem.assocGrid),
                          Width = elem.assocGrid.Width,
                          Height = elem.assocGrid.Height
                      });
    }
    proxy.SaveMarksAsync(marks);
}

I have commented out the line where I originally specified the List. Why is it that I need to use an ObservableCollection here even though I declared it as type List on the server? 开发者_运维百科Is my server-side declaration incorrect?


The default type collections are serialized to in Silverlight is ObservableCollection, mainly for ease in using it for DataBinding purposes. Ehsan's answer is correct; you can change what the default type is in the Configure Service Reference dialog.

Alternatively, you can change this to serialize to a generic list (probably more useful if you have a variety of consumers, or if this is more of a data-transfer-object instead of something you'd bind directly to).


Go to your client project -> Service References -> [Your Proxy] and then Right-Click and select Configure Service Reference. in the new opened dialog you can set the way you like to have collections serialized.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号