Name der Klasse der aktuellen Funktion

  • VB.NET

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von jan99.

    Ich verstehe die Frage glaube ich nicht. In der Standard Fehlermeldung steht doch der Stacktrace.
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    ... Nun solltest es selber wissen. :'D
    In der Klasse könntest du mit :

    VB.NET-Quellcode

    1. Me.GetType().Name


    Den Namen der Klasse holen. (Also wenn deine Klasse "Log" heißt kommt dort Log zurück)

    EDIT// Da glaube ich ist der weg von Rod und Memo besser ;)
    Grüße , xChRoNiKx

    Nützliche Links:
    Visual Studio Empfohlene Einstellungen | Try-Catch heißes Eisen

    jan99 schrieb:

    aber ich möchte
    einfach mal diese Codes probieren:

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    3. Test()
    4. End Sub
    5. Sub Test()
    6. Dim S As New System.Diagnostics.StackTrace(True)
    7. For index = 0 To S.FrameCount - 1
    8. Me.RichTextBox1.AppendText(String.Format("Frame: '{0}', Method: '{1}', FileName: '{2}', LineNumber; '{3}'{4}", index, S.GetFrame(index).GetMethod.Name, S.GetFrame(index).GetFileName, S.GetFrame(index).GetFileLineNumber, Environment.NewLine))
    9. Next
    10. End Sub
    11. End Class
    und

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    3. Test()
    4. End Sub
    5. Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    6. Test()
    7. End Sub
    8. Private Sub Test()
    9. Dim stack = New StackTrace().ToString()
    10. Dim parts() = stack.Split(New Char() {CChar(vbCr), CChar(vbLf)}, StringSplitOptions.RemoveEmptyEntries)
    11. MessageBox.Show(parts(1))
    12. End Sub
    13. End Class
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Du kannst dir mal

    VB.NET-Quellcode

    1. ​Dim frame = (New StackTrace).GetFrame(0)

    anschauen. Die Funktion in der du bist, bekommst zb. mit Frame.getMethod raus.
    Irgendwo im StackTrace findest auch die Klasse usw.
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    ... Nun solltest es selber wissen. :'D
    Ich find die Variante von xChRoNiKx sehr gut. Hab ich nie drüber nachgedacht. Me.Name wirft ja schon die Klasse raus.
    EDIT: Muss mich korrigieren. Me.Name scheint doch nicht die Klasse zu sein. Wenn man es in ner leeren Form1 probiert, steht dort Tatsächlich Form1. Wenn man es in einer weiteren Classe innerhalb von Form1.vb macht, steht dort aber was gänzlich anderes. Muss ich mir nochmal anschaue. Ich glaub über den StackTrace kommt man da doch eher zum Ziel

    EDITEDIT:

    VB.NET-Quellcode

    1. Dim actualClass = (New StackTrace).GetFrame(0).GetMethod.DeclaringType.Name.ToString
    sieht für mich ganz passabel aus.

    Editeditedit:
    Der Weg von xChRoNiKx scheint der wohl kürzeste und damit für mich sinnvollste zu sein. Wenn es nur um die eine Info geht.
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    ... Nun solltest es selber wissen. :'D

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „MemoAnMichSelbst“ ()