private static IEnumerator <TElement> GetEnumeratorImpl(SharedHandle <List <TElement> > handle) { using (handle) { foreach (var item in handle.GetTarget()) { yield return(item); } } }
/// <summary> /// Create new collection of objects which are to be disposed and populates it with objects returned by given iterator. /// </summary> /// <param name="objs"></param> public DisposableEnumerable(IEnumerable <TElement> objs) { var objectsToDispose = new List <TElement>(objs); objectsToDisposeHandle = SharedHandle.NewHandle(objectsToDispose, DisposeElements); }