Итератор .NET для обертывания API метания

У меня есть класс с API, который позволяет мне запрашивать объекты, пока он не выдаст исключение IndexOutOfBoundsException .

Я хочу обернуть его итератором, чтобы иметь возможность писать более чистый код. Однако мне нужно перехватить исключение, чтобы остановить итерацию:

static IEnumerable<object> Iterator( ExAPI api ) {
    try {
       for( int i = 0; true; ++i ) {
          yield return api[i]; // will throw eventually
       }
    } 
    catch( IndexOutOfBoundsException ) {
       // expected: end of iteration.
    }
}

Но ...

При использовании с выражением yield оператор возврата не может появляться в блок catch или в блоке try, который имеет один или несколько пунктов catch. Для большего информацию см. в разделе Обработка исключений Заявления (Справочник по C #). Заявления (Справочник по C #).

В идеале я хочу иметь возможность добавить часы в Visual Studio, а затем перейти в режим отладки, чтобы увидеть, когда изменится количество подключенных считывателей.

Есть ли способ сделать это? Я работаю на C #.

Заранее спасибо.

Мартин

9
задан marsbard 28 October 2010 в 13:08
поделиться