public class Generator<T> : IEnumerable<T> { private GeneratorEnumerator<T> _generatorEnumerator; public Generator(Func<int, T> generatorFunc) { _generatorEnumerator = new GeneratorEnumerator<T>(generatorFunc); } public IEnumerator<T> GetEnumerator() { return _generatorEnumerator; } IEnumerator IEnumerable.GetEnumerator() { return GetEnumerator(); } }