我当前的应用程序中有命令层次结构。
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>
界面。看起来像:if (!_enumerator.MoveNext()) { _enumerator.Reset(); _enumerator.MoveNext(); }
使用循环
IEnumerable<T>
(yield
永远相同的序列):“实现循环迭代器”-HonestIllusion.Com。
也许,有更多的方法来实现它。
你会推荐使用什么,为什么?