public void Using() { var disposable = new Disposable(); var d = Expression.Parameter(typeof(Disposable), "d"); var disposer = Expression.Lambda <Action <Disposable> >( ExpressionEx.Using( d, Expression.Block( Expression.Call(d, typeof(Disposable).GetMethod("Touch")))), d).Compile(); Assert.False(disposable.Touched); Assert.False(disposable.Disposed); disposer(disposable); Assert.True(disposable.Touched); Assert.True(disposable.Disposed); }