Freigeben über


CallerMemberNameAttribute Klasse

Definition

Tags-Parameter, der mit einem bestimmten Namen des Aufrufers gefüllt werden soll.

public ref class CallerMemberNameAttribute sealed : Attribute
[System.AttributeUsage(System.AttributeTargets.Parameter, Inherited=false)]
public sealed class CallerMemberNameAttribute : Attribute
[<System.AttributeUsage(System.AttributeTargets.Parameter, Inherited=false)>]
type CallerMemberNameAttribute = class
    inherit Attribute
Public NotInheritable Class CallerMemberNameAttribute
Inherits Attribute
Vererbung
CallerMemberNameAttribute
Attribute

Beispiele

Das folgende Beispiel zeigt, wie das CallerMemberName Attribut verwendet wird. Bei jedem Aufruf der TraceMessage Methode werden die Aufruferinformationen als Argument für den optionalen 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
Private Sub DoProcessing()
    TraceMessage("Something happened.")
End Sub

Public Sub TraceMessage(message As String,
        <System.Runtime.CompilerServices.CallerMemberName> Optional memberName As String = Nothing,
        <System.Runtime.CompilerServices.CallerFilePath> Optional sourcefilePath As String = Nothing,
        <System.Runtime.CompilerServices.CallerLineNumber()> Optional sourceLineNumber As Integer = 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)
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

Hinweise

Sie wenden das CallerMemberName Attribut auf einen optionalen Parameter an, der einen Standardwert aufweist. Sie müssen einen expliziten Standardwert für den optionalen Parameter angeben. Sie können dieses Attribut nicht auf Parameter anwenden, die nicht als optional angegeben sind.

Sie können das CallerMemberName Attribut verwenden, um die Angabe des Membernamens als String Argument für die aufgerufene Methode zu vermeiden. Auf diese Weise umgehen Sie das Problem, dass durch die Umgestaltung mit Umbenennung die String-Werte nicht geändert werden. Dies ist besonders hilfreich für die folgenden Aufgaben:

  • Verwenden der Ablaufverfolgung und der Diagnoseprogramme

  • Implementieren der INotifyPropertyChanged Schnittstelle beim Binden von Daten. Diese Schnittstelle ermöglicht es der Eigenschaft eines Objekts, ein gebundenes Steuerelement zu benachrichtigen, dass die Eigenschaft geändert wurde, damit das Steuerelement die aktualisierten Informationen anzeigen kann. Ohne das CallerMemberName Attribut müssen Sie den Eigenschaftsnamen als Literal angeben.

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

Anruf erfolgt innerhalb Membernamenergebnis
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 das Mitglied, z. B. "op_Addition".
Attributkonstruktor Der Name des Elements, auf das das Attribut angewendet wird. Wenn es sich bei dem Attribut um ein Element innerhalb eines Elements handelt (z. B. einen Parameter, einen Rückgabewert oder einen generischen Typparameter), ist dieses Ergebnis der Name des Elements, das diesem Element zugeordnet ist.
Kein enthaltenes Element (z. B. Assemblyebene oder Attribute, die auf Typen angewendet werden) Der Standardwert des optionalen Parameters.

Konstruktoren

Name Beschreibung
CallerMemberNameAttribute()

Initialisiert eine neue Instanz der CallerMemberNameAttribute-Klasse.

Eigenschaften

Name Beschreibung
TypeId

Wenn sie in einer abgeleiteten Klasse implementiert wird, wird ein eindeutiger Bezeichner für diese Attribute.

(Geerbt von Attribute)

Methoden

Name Beschreibung
Equals(Object)

Gibt einen Wert zurück, der angibt, ob diese Instanz einem angegebenen Objekt entspricht.

(Geerbt von Attribute)
GetHashCode()

Gibt den Hashcode für diese Instanz zurück.

(Geerbt von Attribute)
GetType()

Ruft die Type der aktuellen Instanz ab.

(Geerbt von Object)
IsDefaultAttribute()

Wenn sie in einer abgeleiteten Klasse überschrieben wird, gibt an, ob der Wert dieser Instanz der Standardwert für die abgeleitete Klasse ist.

(Geerbt von Attribute)
Match(Object)

Wenn sie in einer abgeleiteten Klasse überschrieben wird, wird ein Wert zurückgegeben, der angibt, ob diese Instanz einem angegebenen Objekt entspricht.

(Geerbt von Attribute)
MemberwiseClone()

Erstellt eine flache Kopie der aktuellen Object.

(Geerbt von Object)
ToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.

(Geerbt von Object)

Explizite Schnittstellenimplementierungen

Name Beschreibung
_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Ordnet eine Reihe von Namen einer entsprechenden Reihe von Dispatchbezeichnern zu.

(Geerbt von Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Ruft die Typinformationen für ein Objekt ab, mit denen die Typinformationen für eine Schnittstelle abgerufen werden können.

(Geerbt von Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Ruft die Anzahl der Schnittstellen mit Typinformationen ab, die von einem Objekt bereitgestellt werden (0 oder 1).

(Geerbt von Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Bietet Zugriff auf Eigenschaften und Methoden, die von einem Objekt verfügbar gemacht werden.

(Geerbt von Attribute)

Gilt für:

Weitere Informationen