Aufruferinformationen
Dieser Artikel wurde manuell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen. Weitere Informationen
Übersetzung
Original

Aufruferinformationen (C# und Visual Basic)

 

Mithilfe der Aufrufer-Informationsattribute können Sie Informationen zum Aufrufer einer Methode abrufen.Sie können den Dateipfad des Quellcodes, die Zeilennummer im Quellcode und den Membernamen des Aufrufers abrufen.Diese Informationen sind zum Verfolgen, Debuggen und Erstellen von Diagnosetools sehr nützlich.

Um diese Informationen zu erhalten, verwenden Sie die Attribute, die auf optionale Parameter angewendet werden, von denen jeder einen Standardwert besitzt.In der folgenden Tabelle sind die Aufrufer-Informationsattribute angegeben, die im System.Runtime.CompilerServices-Namespace definiert sind:

Attribut

Beschreibung

Type

CallerFilePathAttribute

Vollständiger Pfad der Quelldatei, die den Aufrufer enthält.Dies ist der Dateipfad zum Zeitpunkt der Kompilierung.

String

CallerLineNumberAttribute

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

Integer (Ganze Zahl)

CallerMemberNameAttribute

Der Methoden- oder Eigenschaftenname des Aufrufers.Weitere Informationen hierzu finden Sie unter Membernamen weiter unten in diesem Thema.

String

Im folgenden Beispiel wird die Verwendung der Aufrufer-Informationsattribute veranschaulicht.Bei jedem Aufruf der TraceMessage-Methode werden die Aufruferinformationen als Argumente für optionale Parameter ersetzt.

public void DoProcessing()
{
    TraceMessage("Something happened.");
}

public void TraceMessage(string message,
        [System.Runtime.CompilerServices.CallerMemberName] string memberName = "",
        [System.Runtime.CompilerServices.CallerFilePath] string sourceFilePath = "",
        [System.Runtime.CompilerServices.CallerLineNumber] int sourceLineNumber = 0)
{
    System.Diagnostics.Trace.WriteLine("message: " + message);
    System.Diagnostics.Trace.WriteLine("member name: " + memberName);
    System.Diagnostics.Trace.WriteLine("source file path: " + sourceFilePath);
    System.Diagnostics.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

Sie müssen einen expliziten Standardwert für jeden optionalen Parameter angeben. Sie können Aufrufer-Informationsattribute nicht auf Parameter anwenden, die nicht als optional festgelegt wurden.

Durch die Aufrufer-Informationsattribute wird ein Parameter nicht optional.Stattdessen beeinflussen sie den Standardwert, der beim Auslassen des Arguments übergeben wird.

Aufrufer-Informationswerte werden zur Kompilierzeit als Literale in Intermediate Language (IL) ausgegeben.Im Gegensatz zu den Ergebnissen der StackTrace-Eigenschaft für Ausnahmen werden die Ergebnisse nicht durch Verbergen beeinflusst.

Sie können die optionalen Argumente explizit angeben, um die Aufruferinformationen zu steuern oder auszublenden.

Sie können das CallerMemberName-Attribut verwenden, um die Angabe des Membernamen als String-Argument an die aufgerufene Methode zu vermeiden. Wenn Sie dieses Verfahren verwenden, vermeiden Sie das Problem, dass Rename Refactoring die String-Werte nicht ändert. Dieser Vorteil ist für die folgenden Aufgaben besonders hilfreich:

  • Verwenden der Ablaufverfolgung und der Diagnoseprogramme

  • Implementierung der INotifyPropertyChanged-Schnittstelle, wenn Daten gebunden werden. Diese Schnittstelle ermöglicht es der Eigenschaft eines Objekts, ein gebundenes Steuerelement darüber 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.

Die folgende Übersicht zeigt die Membernamen, die zurückgegeben werden, wenn Sie das CallerMemberName-Attribut verwenden.

Aufrufe erfolgen in

Ergebnis für Membername

Methode, Eigenschaft oder Ereignis

Der Name der Methode, Eigenschaft oder des Ereignisses von dem der Aufruf stammt.

Konstruktor

Die Zeichenfolge ".ctor"

Statischer Konstruktor

Die Zeichenfolge ".cctor"

Destruktor

Die Zeichenfolge "Finalize"

Benutzerdefinierte Operatoren oder Konvertierungen

Der generierte Name für den Member, beispielsweise "op_Addition".

Attributkonstruktor

Der Name des Members, auf den das Attribut angewendet wird.Wenn das Attribut ein beliebiges Element in einem Member ist (z. B. ein Parameter, ein Rückgabewert oder ein generischer Typparameter), wird als Ergebnis der Name des Members ausgegeben, der diesem Element zugeordnet ist.

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

Der Standardwert des optionalen Parameters.

Anzeigen:
© 2016 Microsoft