A simple .net class which maps an IEnumerator
to a generic IEnumerator
, which is very usefull to convert from generic to non-generic collections.
using System; using System.Collections; using System.Collections.Generic; namespace Intrepid.Collections.Generic { public class EnumerableWrapper<T> : IEnumerable<T> { class EnumeratorWrapper : IEnumerator<T> { IEnumerator enumerator; public EnumeratorWrapper(IEnumerator enumerator) { this.enumerator = enumerator; } public void Dispose() { // maybe we should dispose the underlying IEnumerable? } public bool MoveNext() { return enumerator.MoveNext(); } public void Reset() { enumerator.Reset(); } object System.Collections.IEnumerator.Current { get { return enumerator.Current; } } public T Current { get { return (T)enumerator.Current; } } } IEnumerator enumerator; public EnumerableWrapper (IEnumerable enumerable) { enumerator = enumerable.GetEnumerator(); } public IEnumerator<T> GetEnumerator() { return new EnumeratorWrapper(enumerator); } IEnumerator System.Collections.IEnumerable.GetEnumerator() { return enumerator; } } }