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

C# 如何在同一方法中动态地将调用方法的名称作为参数传递?,c#,C#,我在找这样的东西: public void MyCallingMethod() { var myObj = new Obj(Context.Method.Name); } public void MyCallingMethod() { new Obj(); } 或者更好 是否可以从myObj确定什么调用方法导致对象的创建,但这必须是可靠的,因为我将使用它进行报告 预期结果将是字符串形式的“MyCallingMethod”或“MyC

我在找这样的东西:

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

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


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

您可以查看GetCurrentMethod

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

string fullMethodName = className + "." + methodName;

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

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

public Obj([CallerMemberName]string caller = null)
{ }
如果您这样调用此方法:

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

然后,
caller
的值将是字符串
“MyCallingMethod”

无需使用reflection请不要使用reflection。现在有更好的办法