Funktionsnamen reinterpretieren


#1
Hallo zusammen,

ich will aus einer beliebigen Funktion heraus eine Log-Meldung erzeugen.
gibt es da eine Art Laufzeitvariable die mir dein Funktionsnamen zurückgibt.
Klar kann ich den im Klartext jedesmal in den Meldungsstring reinschreiben,
aber ich möchte dies automatisieren.
Ich kenne dies halt bereits wenn ein Exception aus einem try-catch heraus geworfen wird.
Da kann ich das Exception e ===> e.Message, e.StackTrace, e.Source usw. verwenden.

Vielen Dank.
Grüße von CopWorker
 

zerix

Hausmeister
Moderator
#2
Hallo,

wenn ich dich richtig verstanden habe, sollte Aspekt Orientierte Programmierung (AOP) dir weiterhelfen.
Schau dir mal das Beispiel an {{ service.title }}

Da geht es nicht unbedingt darum, wie du den Namen der Methode bekommst, sondern beliebige Funktionen loggen kannst, das heißt Aufruf und Ergebnis der Methode. Da bekommst du auch über die MethodInfo-Klasse den Namen der Methode.

Viele Grüße
Sascha
 
Zuletzt bearbeitet:
#5
Hallo,
das habe ich mal ausprobiert.
C#:
string strCaller = "";
                CallerMemberNameAttribute cmAttribute = new CallerMemberNameAttribute();
                strCaller = cmAttribute.ToString();
Kann ich auch den Namen der Funktion in der sich die Runtime momentan
befindet reinterpretieren und auf einen String schreiben?

Vielen Dank!
Grüße von
Copworker
 

Spyke

Premium-User
#6
Wie oben in meinem Micosoft Link verwenden,
mit der dort dargestellten TraceMessage Methode.

Der Parameter (im Link gezeigt) ist ja optional.

Sprich du rufst später die Methode einfach wie folgt auf:
TraceMessage("Meine Nachricht");
den Rest macht .Net und in deiner TraceMessage Methode kannst du entsprechend eifnach die Parameter auswerten.