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。现在有更好的办法