Я пытаюсь создать пример приложения, используя OData и Silverlight, используя (что еще?) Сервис Netflix. Мне уже удалось создать приложение с использованием WPF, но я пытаюсь перенести свой класс обслуживания на асинхронную модель.
Мой существующий класс обслуживания (упрощенный) выглядит следующим образом:
public IEnumerable<Title> BlockingSearch(TitleSearchParam param)
{
var catalog = new NetflixCatalog(new Uri("http://odata.netflix.com/Catalog/"));
return catalog.Titles.Where(t =>
t.Instant.AvailableFrom > param.InstantStartDate && t.Instant.AvailableFrom < param.InstantEndDate &&
(string.IsNullOrEmpty(param.TitleName) || t.Name.Contains(param.TitleName))).ToList();
}
Во всех примерах асинхронного использования OData используется какой-либо шаблон Respository Pattern и / или требуется передать инстанцированную коллекцию. Я хотел бы смоделировать сигнатуру метода для вызова Silverlight / Async, чтобы он выглядел примерно так (с сам класс обслуживания не имеет состояния):
public void AsyncSearch(TitleSearchParam param, Action<IEnumerable<Title>> completedCallback, Action<MyErrorClass> errorCallback, object callBackOwner)
{
}
Я думаю, что мог бы , что-то вроде того, что MS описывает в Вызов синхронных методов асинхронно , но я надеялся, что было более элегантное решение, которого мне не хватало.