Es gibt die Befehlshierarchie in meiner aktuellen Anwendung.C#: zirkuläre Aufzählung von IEnumerable
public interface ICommand
{
void Execute();
}
So sind einige Befehle Stateful, andere nicht.
Ich muss IEnumerable auf zirkuläre Weise für einige Befehlsimplementierung während der Befehlsausführung auflisten.
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
wird von Zeit zu Zeit genannt wird, so ist es notwendig, die Iteration Zustand zu speichern.
Wie implementiert man diese zirkuläre Aufzählung?
habe ich zwei Lösungen gefunden:
die
IEnumerator<T>
Schnittstelle. Es sieht aus wie:if (!_enumerator.MoveNext()) { _enumerator.Reset(); _enumerator.MoveNext(); }
Mit dem Kreis
IEnumerable<T>
(yield
immer die gleiche Sequenz): Implementing A Circular Iterator.
Vielleicht gibt es mehrere Möglichkeiten, um es zu erreichen. Was würden Sie empfehlen und warum?
In meinem Fall wird 'Execute' von Zeit zu Zeit aufgerufen, daher ist es notwendig, den Iterationsstatus zu speichern. –