Мне нужно реализовать метод в библиотеке Silverlight, который вызывает (не-wcf-) сервис через httpwebrequest, получает ответ, затем заполняет объект и возвращает его.
Поскольку это Silverlight, ответ возвращается асинхронно, поэтому я не могу понять, где этот объект должен быть заполнен и как он должен быть возвращен.
Это код, который у меня есть:
public MyObject GetMyObject
{
HttpWebRequest req = WebRequest.Create(MyUri) as HttpWebRequest;
req.Method = "GET";
req.Accept = "application/json";
req.BeginGetResponse((cb) =>
{
HttpWebRequest rq = cb.AsyncState as HttpWebRequest;
HttpWebResponse resp = rq.EndGetResponse(cb) as HttpWebResponse;
string result;
using (StreamReader reader = new StreamReader(resp.GetResponseStream()))
{
result = reader.ReadToEnd();
reader.Close();
}
}, req);
}
Я думаю, что я могу заполнить объект сразу после того, как я выполню reader.ReadToEnd (), но где я на самом деле его возвращаю? Я не могу вернуть его внутри функции обратного вызова, но если я верну его в конце GetMyObject (), не гарантируется заполнение объекта после асинхронного обратного вызова.
Заранее спасибо!