Использование строго типизированного метода в качестве аргумента без указания параметров
Можно ли передать строго типизированное имя метода в качестве лямбда-выражения без указания параметров и / или круглых скобок?
Например, если у меня есть следующий метод:
public class CalleeClass
{
public void MethodA(obj param1, obj param2)
{
...
}
}
Я хотел бы вызвать этот метод в другом месте через:
return new MyClass<CalleeClass>(c => c.MethodA); //Note: no ()'s or arguments
гдеМои занятия будет отвечать, скажем, за маршрутизацию MVC, используя имя метода в качестве цели. Цель в том, что мы хотим иметь возможность использовать строго типизированные представления через методы контроллера, и я не хочу предоставлять «глупые» параметры, которые не используются.
В настоящее время я использую код, подобный следующему, чтобы использовать имена методов, но этот стиль все еще требует передачи ложных аргументов и / или скобок.
public void MyClass<T>(Expression<Action<T>> action)
{
var methodName = (action.Body as MethodCallExpression).Method.Name;
}
РЕДАКТИРОВАТЬ: Извините за путаницу, но я сначала попытался упростить проблему, включив в нее только то, что, как я думал, вам нужно, и при этом пропустил некоторую ключевую информацию. Конечная цель здесь состоит в том, чтобы MyClass получил обобщенное выражение типа + лямбда, и лямбда-выражение может передавать строго типизированное имя метода без создания экземпляра объекта. -MB