[英]Expressions static method requires null instance non-static method requires non-null instance
[英]Getting error “Static method requires null instance, non-static method requires non-null instance.” while trying to execute expression tree in C#
在 C# 中,我有一个类MyNamespace.MyClass
,并且在该类中定义了一个方法MyMethod
。 我试图在MyObject
上调用此方法,这是MyClass
类的一个实例,但我在标题中收到错误消息。 这是我的代码:
Expression.Lambda(Expression.Call(typeof(MyNamespace.MyClass).GetMethod("MyMethod"), Expression.Constant("MyParam"))).Compile().Method.Invoke(MyObject, null);
MyMethod
不是静态方法。 我究竟做错了什么?
首先采用 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();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.