public void CooperativeExpressionVisitor_MethodCall_Rewrite3() { var cv = new CooperativeExpressionVisitor(); var m1 = (Expression <Func <MethOp, int, int> >)((m, x) => MethOp.Foo(MethOp.Qux(m.Bar(x)))); var res = cv.Visit(m1.Body); var mr = res as MethodCallExpression; Assert.IsNotNull(mr); Assert.IsNull(mr.Object); Assert.AreEqual("Foz", mr.Method.Name); var mi = mr.Arguments[0] as MethodCallExpression; Assert.IsNotNull(mi); Assert.IsNull(mi.Object); Assert.AreEqual("Qux", mi.Method.Name); var mj = mi.Arguments[0] as MethodCallExpression; Assert.IsNotNull(mj); Assert.AreSame(m1.Parameters[0], mj.Object); Assert.AreSame(m1.Parameters[1], mj.Arguments[0]); }
public void CooperativeExpressionVisitor_MethodCall_Rewrite2() { var cv = new CooperativeExpressionVisitor(); var m1 = (Expression <Func <int, int> >)(x => MethOp.Foo(x)); var res = cv.Visit(m1.Body); var mr = res as MethodCallExpression; Assert.IsNotNull(mr); Assert.IsNull(mr.Object); Assert.AreEqual("Foz", mr.Method.Name); Assert.AreSame(m1.Parameters[0], mr.Arguments[0]); }