Freigeben über


Aufruferinformationen (C# und Visual Basic)

Mit Anrufer-Informationens Attribute verwenden, können Sie Informationen über den Aufrufer an eine Methode abgerufen.Sie erhalten Dateipfad des Quellcodes, Zeilennummer im Quellcode und Member des Namens des Aufrufers.Diese Informationen sind für das Debuggen, die Ablaufverfolgung und das Erstellen von Diagnosetools hilfreich.

Zum Abrufen dieser Informationen verwenden Sie die Attribute zu den optionalen Parameter angewendet werden, die jeweils über einen Standardwert verfügt.In der folgenden Tabelle sind die Attribute aufgeführt, die im Anrufer-Informationens System.Runtime.CompilerServices-Namespace definiert sind:

Attribut

Beschreibung

type

CallerFilePathAttribute

Vollständiger Pfad der Quelldatei, die den Aufrufer enthält.Dies ist der Dateipfad zur Kompilierzeit.

String

CallerLineNumberAttribute

Zeilennummer in der Quelldatei ab, in der die Methode aufgerufen wird.

Integer

CallerMemberNameAttribute

Methode oder Eigenschaftenname des Aufrufers.Weitere Informationen finden Sie unter Member Names weiter unten in diesem Thema.

String

Beispiel

Im folgenden Beispiel wird gezeigt, wie Anrufer-Informationens von Attributen verwendet.Bei jedem Aufruf der TraceMessage Informationen zum Aufrufer, werden die Methode als Argumente für optionale Parameter ersetzt.

' Imports System.Runtime.CompilerServices
' Imports System.Diagnostics

Private Sub DoProcessing()
    TraceMessage("Something happened.")
End Sub

Public Sub TraceMessage(message As String,
        <CallerMemberName> Optional memberName As String = Nothing,
        <CallerFilePath> Optional sourcefilePath As String = Nothing,
        <CallerLineNumber()> Optional sourceLineNumber As Integer = 0)

    Trace.WriteLine("message: " & message)
    Trace.WriteLine("member name: " & memberName)
    Trace.WriteLine("source file path: " & sourcefilePath)
    Trace.WriteLine("source line number: " & sourceLineNumber)
End Sub

' Sample output:
'   message: Something happened.
'   member name: DoProcessing
'   source file path: C:\Users\username\Documents\Visual Studio 2012\Projects\CallerInfoVB\CallerInfoVB\Form1.vb
'   source line number: 15
// 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

Hinweise

Sie müssen ein expliziter Standardwert für jeden optionalen Parameter angeben.Sie können Attribute Anrufer-Informationens nicht auf Parameter angewendet werden, die nicht als optional angegeben werden.

Die Attribute Anrufer-Informationens machen einen Parameter nicht optional.Stattdessen haben sie den Standardwert, der übergeben wird, wenn das Argument weggelassen wird.

Anrufer-Informationens Werte werden als Literale in die Intermediate Language (IL) zur Kompilierzeit ausgegeben.Im Gegensatz zu den Ergebnissen der StackTrace-Eigenschaft für Ausnahmen sind die Ergebnisse nach dem Verbergen nicht betroffen.

Hh534540.collapse_all(de-de,VS.110).gifMember-Namen

Sie können das CallerMemberName-Attribut verwenden, um den Membernamen String als Argument an die aufgerufene Methode festzulegen zu vermeiden.Wenn Sie dieses Verfahren verwenden, vermeiden Sie das Problem, dass Benennen Sie die Umgestaltung nicht die String-Werte ändert.Dieser Vorteil ist besonders nützlich für die folgenden Aufgaben:

  • Verwenden der Ablaufverfolgung und der Diagnoseprogramme.

  • Die INotifyPropertyChanged-Schnittstelle implementieren, wenn Daten gebunden sind.Diese Schnittstelle ermöglicht es der Eigenschaft eines Objekts, um ein gebundenes Steuerelement zu benachrichtigen, dass die Eigenschaft geändert wurde, sodass das Steuerelement die aktualisierten Informationen anzeigen kann.Ohne das CallerMemberName-Attribut müssen Sie den Eigenschaftennamen als Literal angeben.

Das folgende Diagramm zeigt die Membernamen an, die zurückgegeben werden, wenn Sie das CallerMemberName-Attribut verwenden.

Aufrufe tritt auf Elemente

Ergebnis der Membername

Methode, Eigenschaft oder ein Ereignis

Der Name der Methode, Eigenschaft oder das Ereignis durch Aufruf stammt.

Konstruktor

Die Zeichenfolge „.ctor“

Statischer Konstruktor

Die Zeichenfolge „.cctor“

Destruktor

Die Zeichenfolge „Schließen“

Benutzerdefinierte Operatoren oder Konvertierungen

Der generierte Name für den Member, z. B. „op_Addition“.

Attributkonstruktor

Der Name des Members, auf den das Attribut angewendet wird.Wenn das Attribut ein Element innerhalb eines Members (z. B. einen Parameter, ein Rückgabewert oder ein generischer Typparameter) ist, ist das Ergebnis der Name des Members, das diesem Element zugeordnet ist.

Kein enthaltener Member (z. B. auf Assemblyebene oder Attribute, die auf Typen angewendet werden)

Der Standardwert des optionalen Parameters.

Siehe auch

Referenz

Attribute (C# und Visual Basic)

Konzepte

Allgemeine Attribute (C# und Visual Basic)

Optionale Parameter (Visual Basic)

Benannte und optionale Argumente (C#-Programmierhandbuch)

Weitere Ressourcen

Programmierungskonzepte