Использование строго типизированного метода в качестве аргумента без указания параметров

Можно ли передать строго типизированное имя метода в виде лямбда-выражения без дополнительных параметров и / или круглых скобок?

Например, если у меня есть следующий метод:

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 общего типа + лямбда-выражения, а лямбда-выражение может передавать строго типизированное имя метода без создания экземпляра объекта. -MB

5
задан Matt Beckman 8 November 2011 в 18:36
поделиться