【问题标题】:How to dynamically pass name of calling method as a parameter in the same method? [duplicate]如何在同一方法中动态传递调用方法的名称作为参数? [复制]
【发布时间】:2015-09-23 11:11:42
【问题描述】:

我正在寻找这样的东西:

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

甚至更好....

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

预期结果将是字符串形式的“MyCallingMethod”或“MyCallingMethod()”。

【问题讨论】:

标签: c#


【解决方案1】:

你可以看看 GetCurrentMethod

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

string fullMethodName = className + "." + methodName;

但我认为使用那种“东西”不是解决任何问题的好方法。我认为您的应用程序架构错误

【讨论】:

【解决方案2】:

你可以试试 .NET 4.5 CallerMemberName 属性:

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

如果你这样调用这个方法:

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

那么caller的值就是字符串"MyCallingMethod"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-02-09
    • 2012-04-10
    • 2017-10-12
    • 1970-01-01
    • 1970-01-01
    • 2013-05-20
    • 2012-10-11
    相关资源
    最近更新 更多