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?
不能說我明白了點吧,爲什麼你需要這樣做?動態執行的要點是允許非編碼源驅動執行,這種方法要求您提供方法和參數。我錯過了什麼? –