1
我想用C#中某种类型的Lambda表达式返回方法(或方法信息)。MemberExpression是否可以返回方法
public class MyClass {
public object ReturnSomething(string arg, int numericArg)
{/*...*/}
}
然后,后来,我想引用使用Lambda像这样这个方法..
public static void Run<T>(T sourceObject, Expression<Func<T, object>> memberExpression, IEnumerable<object> parameters)
{
var methodInfo = ((MemberExpression)memberExpression.Body).Member as MethodInfo;
if (methodInfo == null)
throw new ArgumentException("memberExpression must yield a method");
/*...*/
}
我已经使用这个具有类似的尝试:
var myClassObject = new MyClass();
Run(myClassObject, o => o.ReturnSomething, new object["string arg", 1]);
但我不断收到我的表达式编译器错误:
无法将方法组'ReturnSomething'转换为非委托类型 'object'。你打算采用这种方法吗?
这是在c#中可行吗?或者我应该放弃并传递一个字符串的方法名称并使用反射来查找而不是使用MemberExpression?
不能说我明白了点吧,为什么你需要这样做?动态执行的要点是允许非编码源驱动执行,这种方法要求您提供方法和参数。我错过了什么? –