如何在同一方法中将调用方法的名称动态传递为参数?

时间:2015-07-06 10:32:27

标签: c#

我正在寻找类似的东西:

public void MyCallingMethod()
        {
           var myObj = new Obj(Context.Method.Name);
        }

甚至更好......

是否可以从myObj确定调用方法导致对象的创建,但这必须是可靠的,因为我将使用它进行报告。

提前致谢。

编辑:预期结果将是“MyCallingMethod”或“MyCallingMethod()”作为字符串。

2 个答案:

答案 0 :(得分:2)

您可以查看GetCurrentMethod

MethodBase method = System.Reflection.MethodBase.GetCurrentMethod();
string methodName = method.Name;
string className = method.ReflectedType.Name;

string fullMethodName = className + "." + methodName;

但我认为使用那种东西''什么都不是好的解决方案。我认为你错误地设置了你的应用程序

答案 1 :(得分:1)

您可以尝试.NET 4.5 CallerMemberName属性:

public Obj([CallerMemberName]string caller = null)
{ }

如果你这样称呼这个方法:

public void MyCallingMethod()
{
    new Obj();
}

然后caller的值将是字符串"MyCallingMethod"