這裏有一個類似的問題:通路方法/返回類型參數在C#
Pass Method as Parameter using C#
它假定你知道方法的參數和返回類型。我想做一些有點不同的事情。我希望創建一個版本的System.Reflection的.GetMethod(串),與其花費lambda函數的 - 所以不是:
MethodInfo methodInfo = typeof(MyClass).GetMethod("AddThing");
我可以用一個更編譯安全:
MethodInfo methodInfo = ReflectionHelper.GetMethod<MyClass>(mc => mc.AddThing);
所以如果ReflectionHelper知道參數計數和返回類型事先答案是簡單的上下的 - 例如,如果它有沒有參數和返回的字符串:
public static MethodInfo GetMethod<T, TReturn>(Expression<Func<T, Func<TArg, TReturn>>> expr)
{
return ((MethodCallExpression)expr.Body).Method;
}
只是我不知道做T他事先提供了參數計數/返回類型,並且我想避免僅使用覆蓋大多數但不是所有情況的20個重載發送垃圾郵件。
那麼,我該怎麼做?
可以'動態'幫忙嗎? – Johnny5
如果您不知道它接受的參數,您打算如何傳遞給該方法以嘗試調用它? – Servy
@ Johnny5我不明白。當它被調用時,這仍然需要一個固定的簽名,或者至少是一個符合提供參數的簽名。 – Servy