从表达式调用实例方法
Invoke an instance method from a expression
我正在尝试弄清楚如何使用提供给方法的参数调用 Expression> 中描述的实例方法。
这里有一个类似的问题:How to call the method from a MethodCallExpression in c#,但它是在非实例方法的上下文中运行的。我的问题是:如何在调用之前使用适当的实例构建表达式。
void Main()
{
Expression<Action<MyClass>> expr = x => x.SomeMethod("Nathan", 10, 1.5d);
// i need to provide the expression a new MyClass()
Expression.Lambda(expr).Compile().DynamicInvoke();
}
public class MyClass
{
public void SomeMethod(string param1, int param2, double param3) {
Console.WriteLine ("Hello: {0}, {1}, {2}", param1, param2, param3);
}
}
如果只需要调用表达式,需要先编译委托再调用:
Expression<Action<MyClass>> expr = x => x.SomeMethod("Nathan", 10, 1.5d);
Action<MyClass> action = expr.Compile();
MyClass instance = new MyClass();
action(instance);
我正在尝试弄清楚如何使用提供给方法的参数调用 Expression> 中描述的实例方法。
这里有一个类似的问题:How to call the method from a MethodCallExpression in c#,但它是在非实例方法的上下文中运行的。我的问题是:如何在调用之前使用适当的实例构建表达式。
void Main()
{
Expression<Action<MyClass>> expr = x => x.SomeMethod("Nathan", 10, 1.5d);
// i need to provide the expression a new MyClass()
Expression.Lambda(expr).Compile().DynamicInvoke();
}
public class MyClass
{
public void SomeMethod(string param1, int param2, double param3) {
Console.WriteLine ("Hello: {0}, {1}, {2}", param1, param2, param3);
}
}
如果只需要调用表达式,需要先编译委托再调用:
Expression<Action<MyClass>> expr = x => x.SomeMethod("Nathan", 10, 1.5d);
Action<MyClass> action = expr.Compile();
MyClass instance = new MyClass();
action(instance);