come ottenere la class Invoker di questo metodo

È ansible?

voglio ottenere il nome di class (come foo) che sta invocando il mio metodo (come myMethod)

(e il metodo è in un’altra class (come i))

piace:

class foo { i mc=new i; mc.mymethod(); } class i { myMethod() {........ Console.WriteLine(InvokerClassName);// it should writes foo } } 

Grazie in anticipo

Puoi utilizzare StackTrace per risolvere il problema con il chiamante, ma supponiamo che non ci sia inning. Le tracce dello stack non sono sempre accurate al 100%. Qualcosa di simile a:

 StackTrace trace = new StackTrace(); StackFrame frame = trace.GetFrame(1); // 0 will be the inner-most method MethodBase method = frame.GetMethod(); Console.WriteLine(method.DeclaringType); 

Ho trovato il maggese: http://msdn.microsoft.com/en-us/library/hh534540.aspx

 // using System.Runtime.CompilerServices // using System.Diagnostics; public void DoProcessing() { TraceMessage("Something happened."); } public void TraceMessage(string message, [CallerMemberName] string memberName = "", [CallerFilePath] string sourceFilePath = "", [CallerLineNumber] int sourceLineNumber = 0) { Trace.WriteLine("message: " + message); Trace.WriteLine("member name: " + memberName); Trace.WriteLine("source file path: " + sourceFilePath); Trace.WriteLine("source line number: " + sourceLineNumber); } // Sample Output: // message: Something happened. // member name: DoProcessing // source file path: c:\Users\username\Documents\Visual Studio 2012\Projects\CallerInfoCS\CallerInfoCS\Form1.cs // source line number: 31