Вам придется пройти Expression trees
.Вот пример кода:
internal static class myExpressionService
{
public static string Get(Expression<Action> expression)
{
MethodCallExpression methodCallExpression = (MethodCallExpression)expression.Body;
var method = methodCallExpression.Method;
var argument = (ConstantExpression) methodCallExpression.Arguments.First();
return string.Format("{0}.{1}({2})", method.DeclaringType.FullName, method.Name, argument.Value);
}
}
Он работает, если вызывается следующим образом: string result = myExpressionService.Get(() => myService.Do(1));
Вывод: Namespace.IMyService.Do(1)
Вы можете расширить / обновитьэто для обработки вашего сценария.