是否有可能將方法的強類型名作爲lambda表達式傳遞,而不提供參數和/或括號?在不指定參數的情況下使用強類型方法作爲參數
舉例來說,如果我有以下方法:
public class CalleeClass
{
public void MethodA(obj param1, obj param2)
{
...
}
}
我想通過在其他地方調用這個方法:
return new MyClass<CalleeClass>(c => c.MethodA); //Note: no()'s or arguments
凡MyClass的將負責,也就是說,MVC使用方法名稱作爲目標進行路由。這裏的目標是我們希望能夠通過控制器方法使用強類型視圖,並且我不想提供不被使用的「啞」參數。
目前,我使用類似於以下代碼的代碼來使用方法名稱,但是這種風格仍然需要傳遞假參數和/或括號。
public void MyClass<T>(Expression<Action<T>> action)
{
var methodName = (action.Body as MethodCallExpression).Method.Name;
}
編輯:很抱歉的混亂,但我最初試圖通過簡化只包括了我認爲你需要,並在這樣做冷落的一些關鍵信息的問題。這裏的最終目標是使MyClass接收一個泛型類型+ lambda表達式,並且lambda表達式可以傳遞強類型方法名稱而不實例化一個對象。 -MB
你不能設置可選參數嗎?另外:MethodCallExpression將不會工作,除非它有括號我很確定。 – chemicalNova
參數不啞巴;它們被編譯器使用...... –
參數沒有任何意義,但我們只需要路由名稱的方法,給出我們正在實例化對象的印象似乎很奇怪。我不相信這甚至是可能的,這就是我來到這裏的原因。 :) –