public void Can_pass_closure_with_variable_block_to_TryCompile() { var intVariable = Variable(typeof(int)); var intDoubler = new IntDoubler(); var intDoublerConstExpr = Constant(intDoubler); var expr = Lambda <Action>(Block( new[] { intVariable }, Assign(intVariable, Constant(1)), Call(intDoublerConstExpr, nameof(IntDoubler.Double), Type.EmptyTypes, intVariable))); var f = expr.TryCompileWithPreCreatedClosure <Action>(intDoublerConstExpr); Assert.IsNotNull(f); f(); Assert.AreEqual(2, intDoubler.DoubleValue); }
public ClosureIntHolder(IntDoubler value) { Value = value; }