Skip to content

Instantly share code, notes, and snippets.

@pcibraro
Created February 17, 2012 15:17
Show Gist options
  • Select an option

  • Save pcibraro/1853986 to your computer and use it in GitHub Desktop.

Select an option

Save pcibraro/1853986 to your computer and use it in GitHub Desktop.
DisposableEnumerable
public class DisposableEnumerable<T> : IEnumerable<T>
{
IEnumerable<T> source;
public DisposableEnumerable(IEnumerable<T> source)
{
this.source = source;
}
public IEnumerator<T> GetEnumerator()
{
Console.WriteLine("Begin Section");
return new DisposableEnumerator<T>(this.source.GetEnumerator());
}
System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
{
Console.WriteLine("Begin Section");
return new DisposableEnumerator<T>(this.source.GetEnumerator());
}
}
public class DisposableEnumerator<T> : IEnumerator<T>
{
IEnumerator<T> source;
public DisposableEnumerator(IEnumerator<T> source)
{
this.source = source;
}
public T Current
{
get { return this.source.Current; }
}
public void Dispose()
{
Console.WriteLine("End section");
this.source.Dispose();
}
object System.Collections.IEnumerator.Current
{
get { return this.source.Current; }
}
public bool MoveNext()
{
return this.source.MoveNext();
}
public void Reset()
{
this.source.Reset();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment