Benutzer mit den meisten Antworten
this.ToString() ergibt NameSpace und Klassenname, Ich wollte mit ähnlichem auch den Methodennamen haben

Frage
-
Hallo!
Ich nutze die Methode ths.ToString(), um den Namespace- Namen und den Klassennamen auszugeben oder zu vergleichen. Aber für Fehlersuche ist auch der Methodenname interessant. Deshalb würde ich eine ähnlche Methode zu dem this haben, die zusätzlich auch noch den Methodennamen angibt.
Vielen Dank
Klaus Kühl
P.S.: Schön ist. dass man bei MSDN die Kontrolle darüber hat, wo man sich ausloggen will. Aber die Möglichkeit, sich auf einmal aus dem ganzen MSDN auszuloggen und gleichzeitig alle Fenster in Zusammenhanng mit MSDN zu schließen hat auch etwas für sich. Da ist die Frage, ob der Nutzer überhaupt weiß, wo er sich nur aus einer Seite ausloggt im Vergleich zu dem Ausloggen aus dem ganzen MSDN? Aber wenn man da ganz drastische Begriffe wählt, könnte es möglilch sein, dass der Nutzer mit der Möglichkeit sich ganz aus MSDN auf einmal auszuloggen etwas anfangen kann.- Bearbeitet Klaus Kühl Sonntag, 7. Juni 2015 17:27
Antworten
-
Hallo,
this.ToString() gibt dir nur solange den vollständigen Typ Namen zurück wie du ToString nicht überschreibst. Da solltest du also aufpassen.
Ab C# 6 wird es den nameof-Operator geben, der den Namen eines Code-Elements zurück gibt:
class Test{ public void DoSome(){} public static void DoSomeStatic(){} } var className = nameof(Test);//gibt "Test" zurück var methodName = nameof(Test.DoSomeStatic);//gibt "DoSomeStatic" zurück
Das funktioniert aber eben erst ab C# 6 (VS 2015). In allen früheren Versionen musst du dafür den String fest übergeben.
Was vielleicht noch hilfreich ist, ist das CallerMemberNameAttribute. Wenn du dieses auf einen optionalen string-Parameter einer Methode anwendest, so wird diesem Parameter standardmäßig der Name des Aufrufers übergeben.
zu deinem PS: Wenn man irgendwo auf den Microsoftseiten auf Abmelden klickt, so wird man überall abgemeldet. Egal ob das das Forum, die MSDN Subscription oder ganz andere Seiten wie Outlook sind. Lediglich O365 und Azure spielen da manchmal nicht ganz so gut mit. Die einzelnen geöffneten Fenster bekommen das nicht alle mit, aber spätestens nach dem nächsten Aktualisieren oder Link ist man auch dort nicht mehr sichtbar angemeldet.
Tom Lambert - .NET (C#) MVP
Wozu Antworten markieren und für Beiträge abstimmen? Klicke hier.
Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter | Account bestätigen (Verify Your Account)
Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets- Als Antwort vorgeschlagen Tobias Scholze Sonntag, 7. Juni 2015 18:15
- Als Antwort markiert Aleksander Chalabashiev Dienstag, 16. Juni 2015 09:35
Alle Antworten
-
Hallo,
this.ToString() gibt dir nur solange den vollständigen Typ Namen zurück wie du ToString nicht überschreibst. Da solltest du also aufpassen.
Ab C# 6 wird es den nameof-Operator geben, der den Namen eines Code-Elements zurück gibt:
class Test{ public void DoSome(){} public static void DoSomeStatic(){} } var className = nameof(Test);//gibt "Test" zurück var methodName = nameof(Test.DoSomeStatic);//gibt "DoSomeStatic" zurück
Das funktioniert aber eben erst ab C# 6 (VS 2015). In allen früheren Versionen musst du dafür den String fest übergeben.
Was vielleicht noch hilfreich ist, ist das CallerMemberNameAttribute. Wenn du dieses auf einen optionalen string-Parameter einer Methode anwendest, so wird diesem Parameter standardmäßig der Name des Aufrufers übergeben.
zu deinem PS: Wenn man irgendwo auf den Microsoftseiten auf Abmelden klickt, so wird man überall abgemeldet. Egal ob das das Forum, die MSDN Subscription oder ganz andere Seiten wie Outlook sind. Lediglich O365 und Azure spielen da manchmal nicht ganz so gut mit. Die einzelnen geöffneten Fenster bekommen das nicht alle mit, aber spätestens nach dem nächsten Aktualisieren oder Link ist man auch dort nicht mehr sichtbar angemeldet.
Tom Lambert - .NET (C#) MVP
Wozu Antworten markieren und für Beiträge abstimmen? Klicke hier.
Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter | Account bestätigen (Verify Your Account)
Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets- Als Antwort vorgeschlagen Tobias Scholze Sonntag, 7. Juni 2015 18:15
- Als Antwort markiert Aleksander Chalabashiev Dienstag, 16. Juni 2015 09:35
-
Hallo Klaus,
alternativ zu den Möglichkeiten im kommenden C# 6, die Tom richtig angegeben hat, kannst du mit den aktuell verfügbaren Versionen das ganze auch über Reflection bekommen.Wenn du bei Fehlersuche auf Methodennamen bzw. Debuggininformationen scharf bist, dann kannst du auch die Klasse StackTrace verwenden.
Viele Grüße Holger M. Rößler
-
Vielen Dank!
Der MethodName würde mir in Zusammenhang mit dem ClassName und dem Namespace schon reichen. Dann kann ich in jedem switch- Statement im default- Zweig eine Meldung ausgeben, dass ich da ein case- Element vergessen habe zu programmieren. Bisher sollte so etwas bei mir auf dem Bidlschirm erscheinen. Dann ist man auch darauf verlassen, dass der Nutzer, wenn er das sieht, mich kontaktiert. Da wäre auch die Idee, dass man das in eine Art Log- Datei schreibt und so etwas ähnliches wie den Problembericht - den es schon unter Windows XP gab - macht. Da ist auch die Frage, ob man tatsächlich, wenn man dann im default- Zweig war, tatsächlich nicht mehr mit dem Programm arbeiten kann? Eine Funktion, die nicht programmiert ist, kann man ja definitiv nicht nutzen. Aber wenn dann vieles andere funtkionieren könnte, wäre es für den Benutzer vielleicht ganz angenehm, wenn er immerhin noch das andere machen kann.
Klaus Kühl