Как я могу расширить IEnumerable для загрузки моей коллекции из веб-службы?C#

Место общения программистов C#
Ответить
Anonymous
 Как я могу расширить IEnumerable для загрузки моей коллекции из веб-службы?

Сообщение Anonymous »

Я пытался понять, как реализовать Enumerable/

Код: Выделить всё

IEnumerator
для удовлетворения следующего:
  • Я вызываю веб-службу для создания запроса
  • Я опрашиваю веб-службу, чтобы узнать, когда она готова вернуть результаты
  • Как только веб-служба готова вернуть результаты, я вызываю метод (например, GetNext(n)), чтобы получить из него n элементов
  • Как только GetNext(n) вернет меньше n результатов, я получил все свои элементы.
Мне трудно понять, как заставить IEnumerable взять на себя всю тяжелую работу, и документация MSDN IEnumerable не помогла.

Вот упрощенная версия моего кода:

Код: Выделить всё

public class MyEnumerable : IEnumerable
{
private MyWebService _service;
private int _queryID;

public MyEnumerable(MyWebService service, int queryID)
{
_service = service;
_queryID = queryID;
}

IEnumerator IEnumerable.GetEnumerator()
{
return new MyEnumerator(_service, _query);
}
}

public class MyEnumerator : IEnumerator
{
private List _items;  //want to load my items from WebService into this
private MyWebService _service;
private int _queryID;
private int _index = 0;

private MyEnumerator(MyWebService service, int queryID)
{
_service = service;
_queryID = queryID;
}

public object Current
{
//what goes here?
}

public bool MoveNext()
{
//what goes here? would I call the web service here?
}

public void Reset()
{
_index = 0;
}

}
Надеюсь, это имеет больше смысла. Предположим, я могу вызвать в своем веб-сервисе метод GetNext(n).

Подробнее здесь: https://stackoverflow.com/questions/204 ... eb-service
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»