我如何为一个方法做一个methodcalexpression
本文关键字:一个 methodcalexpression 方法 | 更新日期: 2023-09-27 17:54:18
如果我有一个方法名和方法的参数,我如何为该方法创建一个MethodCallExpression
?
下面是一个示例方法:
public void HandleEventWithArg(int arg)
{
}
下面是我的代码:
var methodInfo = obj.GetType().GetMethod("HandleEventWithArg");
var body = Expression.Call(Expression.Constant(methodInfo), methodInfo.GetType().GetMethod("Invoke"), argExpression);
这里有一个例外:
类型的未处理异常"System.Reflection。mscorlib.dll中发生了AmbiguousMatchException附加信息:找到歧义匹配。
我不确定这对你是否合适,但是你的调用表达式的构造对我来说是错误的(你试图创建一个调用你的方法info的Invoke
方法的表达式,而不是你的类型的实际方法。
var methodInfo = obj.GetType().GetMethod("HandleEventWithArg");
// Pass the instance of the object you want to call the method
// on as the first argument (as an expression).
// Then the methodinfo of the method you want to call.
// And then the arguments.
var body = Expression.Call(Expression.Constant(obj), methodInfo, argExpression);
I've make a fiddle
PS:我猜argExpression
是您的方法期望的int
的表达式