का परिपत्र गणना मेरे वर्तमान एप्लिकेशन में आदेश पदानुक्रम है।सी #: आईनेमेरेबल
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
हमेशा उसी क्रम) का उपयोग करना: Implementing A Circular Iterator।
शायद इसे प्राप्त करने के और तरीके हैं। आप क्या उपयोग करने की सिफारिश करेंगे और क्यों?
मेरे मामले में, समय-समय पर 'निष्पादन' कहा जाता है, इसलिए पुनरावृत्ति स्थिति को स्टोर करना आवश्यक है। –