public void ForEachStructEnumeratorImplicitMembers()
        {
            var counters           = new[] { new DisposableCounter(), new DisposableCounter(), new DisposableCounter() };
            var enumerable_counter = new StructEnumerableCounterImplicitMembers(counters);

            var ec   = Expression.Parameter(typeof(StructEnumerableCounterImplicitMembers), "ec");
            var item = Expression.Variable(typeof(DisposableCounter), "c");

            var hitcounter = Expression.Lambda <Action <StructEnumerableCounterImplicitMembers> >(
                ExpressionEx.ForEach(
                    item,
                    ec,
                    Expression.Call(item, "Hit", Type.EmptyTypes)),
                ec).Compile();

            hitcounter(enumerable_counter);

            foreach (var counter in counters)
            {
                Assert.Equal(1, counter.Count);
                Assert.True(counter.Disposed);
            }
        }
示例#2
0
 public Enumerator(StructEnumerableCounterImplicitMembers owner)
     : this()
 {
     this.owner   = owner;
     this.current = -1;
 }