Когда вы перенаправляете пользователя на сайт входа в систему для получения кода авторизации, убедитесь, что вы обновили URL-адрес, чтобы включить обновленные разрешения в параметр запроса scope
// Line breaks for legibility only
https://login.microsoftonline.com/{tenant}/oauth2/v2.0/authorize?
client_id=6731de76-14a6-49ae-97bc-6eba6914391e
&response_type=code
&redirect_uri=http%3A%2F%2Flocalhost%2Fmyapp%2F
&response_mode=query
&scope=offline_access%20user.read%20mail.read%20task.read
&state=12345
Не непосредственно от блока итератора, нет.
Однако вызывающая сторона может всегда буферизовать результаты, например, в a List<T>
, или просто звоните Reverse()
- но это не всегда применяется.
Нет, конечный автомат, сгенерированный компилятором C#, строго вперед.
Даже не имеет смысла идти назад во многих случаях. Предположите, что итератор, читающий из сетевого потока - идет назад, он должен был бы помнить все, что он когда-либо читал, потому что он не мог перемотать время и попросить у сети данных снова.
(Так же что-либо, что генерировало данные некоторым способом с потерями. Вообразите итератор, который возвратил новое управление Conway по Жизни на каждом повторении - существует несколько плат, которые, возможно, все были предыдущим, так для движения назад снова необходимо помнить то, что Вы уже возвратили.)
Библиотека C5 Collections (http://www.itu.dk/research/c5/) реализует наборы и связанный список с назад перечислением. Проектом является OpenSource, таким образом, необходимо смочь найти ответ там.
Нет. Одно из ограничений IEnumerator - то, что он содержит свое текущее состояние, и он не помнит свое предшествующее состояние. В результате IEnumerable вперед только.
Если необходимо держать на предшествующие состояния, считайте IEnumerable в Список или LinkedList и перечислите через те объекты вместо этого.
На самом деле, кажется, существует подход, описанный в Ускоренном 2008 C#. К сожалению, две страницы не видимы в предварительном просмотре, и он должен полагаться на отражение (результаты которого могут кэшироваться, как обычно), но можно получить суть.
Нет. Использование yield
результаты в IEnumerable
который однонаправлен.