Вы можете сделать что-то подобное с делегатами:
public static string MethodName(Delegate d) {
return d.Method.Name;
}
// and to use...
MethodName(new Func<object, int>(Convert.ToInt32));
Если вы используете конкретную подпись делегата, вы можете создать определенные перегрузки:
public static string MethodName(Func<object, int> d) {
return MethodName((Delegate)d);
}
MethodName(Convert.ToInt32);
Вы также можете сделать что-то с дженериками, если у вас есть игра с этим.