Можно ли передать строго типизированное имя метода в виде лямбда-выражения без дополнительных параметров и / или круглых скобок?
Например, если у меня есть следующий метод:
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