2015-07-06 48 views
1

我正在寻找这样的事情:如何在同一个方法中动态地将调用方法的名称作为参数传递?

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

甚至更​​好....

有没有可能从MyObj中,以确定哪些调用方法导致创建的对象,但是这必须是可靠的,因为我将用它来进行报告。

在此先感谢。

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

+0

http://stackoverflow.com/questions/2652460/c-sharp-how-to-get-the-name-of-the-current-method-from-code –

+0

http://stackoverflow.com/questions/44153/can-you-use-reflection-to-find-the-name-of-currently-executed-method –

+0

http://stackoverflow.com/a/13496108/1789202无需使用refleciton – CSharpie

回答

2

你可以看看GetCurrentMethod

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

string fullMethodName = className + "." + methodName; 

但我认为,使用那种,,事情“”不是什么好的解决方案。我想你已经misarchitected你应用程式

+1

请不要使用使用重新感染。现在有更好的方法http://stackoverflow.com/a/13496108/1789202 – CSharpie

1

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

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

如果调用此方法是这样的:

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

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

相关问题