Laden...

Methodenname auslesen

Erstellt von Pimsti vor 16 Jahren Letzter Beitrag vor 15 Jahren 2.663 Views
Thema geschlossen
P
Pimsti Themenstarter:in
57 Beiträge seit 2008
vor 16 Jahren
Methodenname auslesen

Ich habe eine Klasse mit Methoden welche Systemnachrichten auf dem Bildschirm und/oder in Log-Files abspeichert.
Wenn ich nun von irgend einer Methode aus eine Systemnachricht in das Log-File schreiben will rufe ich folgende statische Methode auf:

print(string Message, string ClassPath);

wobei Message der Nachricht entspricht und Classpath folgender Konvention:

z.B. befindet sich das Programm gerade in der Methode isXYZ der Class ABC im Namensraum TEST und ich will als Systemnachricht "Hallo" ausgeben, dann ist dies mit folgendem statischen Methodenaufruf zu realisieren:

SystemMessage.print("Hallo","TEST.ABC.isXYZ");

Nun will ich aber das das Programm selbst den String "TEST.ABC.isXYZ" ermitteln. Ist dies möglich?
Habe mich nun ca. 2 Stunden mit allen möglichen Varianten gespielt aber komme auf keinen grünen Zweig.

Danke im Voraus für Eure Hilfe

D
10 Beiträge seit 2008
vor 16 Jahren

Schau dir mal die Klasse System.Diagnostics.StackTrace an. Vielleicht hilft dir die weiter?

J
3.331 Beiträge seit 2006
vor 16 Jahren

Immer diese verdammten Doppel-Posts. Unter Mathodenname der Rufermethode ermitteln. hast Du doch die Antwort schon erhalten. Jürgen

P
Pimsti Themenstarter:in
57 Beiträge seit 2008
vor 16 Jahren

@juetho:
Doppelposts deswegen da nicht alle so wie Du alle Foren durchforsten.
Trotzdem danke für Deine Hilfe

Leider haben bei Infos nicht zum Ziel geführt.
Ich kann immer nur die Methoden bzw. den Stack der aufrufenden Methoden auslesen.
Ich benötige aber auch die Info aus welcher Klasse die Methode ist und zu welchem namespace diese gehören.

ich hoffe es hat noch jemand ein paar Tipps für mich!

S
8.746 Beiträge seit 2005
vor 16 Jahren

Macht den Thread zu. Trotz Ermahnung geht das Doppelposten weiter.

225 Beiträge seit 2006
vor 15 Jahren

aloha,

was habt ihr denn gegen das doppelposten, so lange es in verschiedenen foren ist?
ich finde es sogar gut. denn dadurch wachsen beide foren und mehreren leuten wird dadurch geholfen.

zum problem.
Pimsti wird es wahrscheinlich nicht mehr interessieren aber vll andere. mit this.ToString() bekommt man namespace und klasse ausgegeben.

a hui hau
puppet

ach so. GetType().FullName geht natürlich auch. aber das wurde ja bereits ausführlich im andern forum erklärt 😉

Yunky: was fürn operator muss ich den nehmen wenn ich sagen will nichtgrößergleich??
Yunky: !>3??
Yunky: !≥ ??
Puppetmaster: G
Yunky: aja ka
Puppetmaster: kleiner (<)
Yunky: stimmt^^

2.187 Beiträge seit 2005
vor 15 Jahren

Hallo Puppetmaster,

was habt ihr denn gegen das doppelposten

Das wurde schon zu offt diskutiert. In Kürze: Der Poster beschäftigt in mehrern Foren Leute mit dem Problem (kostet die ja zeit) und das ist einfach nur hinterhältig. UND meistens wird das Ergebnis aus einem Forum NICHT in das andere Übernommen! (Toll, das Form wächst an, aber anstadt mit nütlichem Wissen, nur mit Doppelten Texten auf zwei verschiedenen Websites!)

this.ToString()

Kann alles mögliche Zurück Liefern, das kann jedes Objekt selbst bestimmten.
.GetType().FullName ist unendlich viel besser.

Gruß
Juy Juka

225 Beiträge seit 2006
vor 15 Jahren

aloha,

na dann will ich die diskussion mal nicht neu anfachen. obwohl ich sagen muss, dass mich die argumente nicht überzeugt haben.
aber da der thread eh nicht geclosed wurde, ist es für hier auch egal.

zurück zum eigentlichen thema. das GetType() besser ist finde ich auch.
nur da man ja in der regel die klasse um die methode selbst schreibt wird man auch wissen, ob man ToString() überschrieben hat.
daher müsste ToString() fast immer auch funktionieren.

geht mir jetzt eigentlich nur drum, ob meine denkweise so richtig ist.
das GetType() besser ist, ist unstreitbar.

a hui hau
puppet

Yunky: was fürn operator muss ich den nehmen wenn ich sagen will nichtgrößergleich??
Yunky: !>3??
Yunky: !≥ ??
Puppetmaster: G
Yunky: aja ka
Puppetmaster: kleiner (<)
Yunky: stimmt^^

49.485 Beiträge seit 2005
vor 15 Jahren

Hallo Puppetmaster,

aber da der thread eh nicht geclosed wurde, ist es für hier auch egal.

nein ist es nicht. Der Thread war nur versehentlich offen.

na dann will ich die diskussion mal nicht neu anfachen. obwohl ich sagen muss, dass mich die argumente nicht überzeugt haben.

Siehe [Hinweis] Wie poste ich richtig? Punkt 2.

Diese Regel ist aus der Erfahrung mit solchen Threads entstanden. Und die hat gezeigt, dass Crossposten in verschieden Foren nur bei Fragen vorkommt, bei denen es schlicht eine Unverschämtheit ist, damit merhrere Foren zu beschäftigen, weil sie so trivial oder grundlegend sind, dass sie keinem Forum einen Gewinn bringen, sondern sowieso schon mehrfach beantwortet wurden. Genau wie in diesem konkreten Fall.

Ob dich die Argumentation überzeugt spielt letztlich trotzdem keine Rolle. Unseren Regeln sind an diesem Punkt eindeutig und wir erwarten, dass sie eingehalten werden.

Zum Schluss noch der Hinweis, dass dein Rat mit dem ToString mindestens sehr naiv und insgesamt subpotimal ist. Es ist im Gegenteil von der Verwendung von ToString abzuraten. Eine sinnvolle Alternative hat JuyJuka schon genannt.

herbivore

Thema geschlossen