在C#中,我有一个类MyNamespace.MyClass
,并且在该类中定义了一个方法MyMethod
。我试图在MyObject
类的实例MyClass
上调用此方法,但是标题出现错误。这是我的代码:
Expression.Lambda(Expression.Call(typeof(MyNamespace.MyClass).GetMethod("MyMethod"), Expression.Constant("MyParam"))).Compile().Method.Invoke(MyObject, null);
MyMethod
不是静态方法。我在做什么错了?
答案 0 :(得分:1)
首先使用MethodInfo的Expression.Call
的重载适用于静态方法。您需要以下代码:Expression.Call,例如,要编译一个调用myObject.MyMethod("MyParam")
的委托,将是:
var f = (Action)Expression.Lambda(Expression.Call(Expression.Constant(myObject), typeof(MyClass).GetMethod("MyMethod"), Expression.Constant("MyParam"))).Compile();
f();