현재 응용 프로그램에 명령 계층 구조가 있습니다.C# : IEnumerable의 순환 열거
public interface ICommand
{
void Execute();
}
따라서 일부 명령은 상태 저장이며 일부 명령은 그렇지 않습니다.
명령 실행 중 일부 명령 구현을 위해 원형 방식으로 IEnumerable을 열거해야합니다.
public class GetNumberCommand : ICommand
{
public GetNumberCommand()
{
List<int> numbers = new List<int>
{
1, 2, 3
};
}
public void Execute()
{
// Circular iteration here.
// 1 => 2 => 3 => 1 => 2 => 3 => ...
}
public void Stop()
{
// Log current value. (2 for example)
}
}
Execute
은 때때로 불리는 그래서 반복 상태를 저장하는 것이 필요하다.
순환 식 열거 형을 구현하는 방법은 무엇입니까? IEnumerator<T>
인터페이스를 사용하여
:
나는 두 가지 해결책을 발견했다. 그것은 같다 : 원형
IEnumerable<T>
(yield
영원히 동일한 시퀀스)를 사용if (!_enumerator.MoveNext()) { _enumerator.Reset(); _enumerator.MoveNext(); }
어쩌면 더 많은 방법이 있습니다. 무엇을 사용 하시겠습니까? 그 이유는 무엇입니까? 대신있는 IEnumerator 인터페이스를 다루는
제 경우에는'Execute'가 때때로 호출되기 때문에 반복 상태를 저장해야합니다. –