Абсолютно - но вам понадобится подпись метода, подобная этой:
public static string GetMethodName<T>(Expression<Action<T>> action)
(Это означает, что вам нужно будет указать аргумент типа при его вызове, чтобы использовать лямбда-выражение.)
Пример кода:
using System;
using System.Linq.Expressions;
class Test
{
void Foo()
{
}
static void Main()
{
string method = GetMethodName<Test>(x => x.Foo());
Console.WriteLine(method);
}
static string GetMethodName<T>(Expression<Action<T>> action)
{
MethodCallExpression methodCall = action.Body as MethodCallExpression;
if (methodCall == null)
{
throw new ArgumentException("Only method calls are supported");
}
return methodCall.Method.Name;
}
}