CallerMemberNameAttribute CallerMemberNameAttribute CallerMemberNameAttribute CallerMemberNameAttribute Class

Definition

Ermöglicht das Abrufen des Methoden- oder Eigenschaftsnamens des Methodenaufrufers.Allows you to obtain the method or property name of the caller to the method.

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

Beispiele

Im folgenden Beispiel wird die Verwendung des CallerMemberName-Attributs veranschaulicht.The following example shows how to use the CallerMemberName attribute. Bei jedem Aufruf der TraceMessage -Methode werden die Aufruferinformationen als Argument für den optionalen-Parameter ersetzt.On each call to the TraceMessage method, the caller information is substituted as an argument to the optional parameter.

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 über einen Standardwert verfügt.You apply the CallerMemberName attribute to an optional parameter that has a default value. Sie müssen einen expliziten Standardwert für den optionalen Parameter angeben.You must specify an explicit default value for the optional parameter. Sie können dieses Attribut nicht auf Parameter anwenden, die nicht als optional angegeben sind.You can't apply this attribute to parameters that aren't specified as optional.

Weitere Informationen finden Sie unter Aufruferinformationen.For more information, see Caller Information.

Sie können das CallerMemberName-Attribut verwenden, um den Membernamen nicht als String-Argument für die aufgerufene Methode angeben zu müssen.You can use the CallerMemberName attribute to avoid specifying the member name as a String argument to the called method. Auf diese Weise umgehen Sie das Problem, dass durch die Umgestaltung mit Umbenennung die String-Werte nicht geändert werden.By using this technique, you avoid the problem that Rename Refactoring doesn't change the String values. Dies ist besonders nützlich für die folgenden Aufgaben:This is especially useful for the following tasks:

  • Verwenden der Ablaufverfolgung und der DiagnoseprogrammeUsing tracing and diagnostic routines.

  • Implementieren der INotifyPropertyChanged-Schnittstelle beim Binden von DatenImplementing the INotifyPropertyChanged interface when binding data. Diese Schnittstelle ermöglicht es der Eigenschaft eines Objekts, ein gebundenes Steuerelement über die Änderung der Eigenschaft zu benachrichtigen, damit das Steuerelement die aktualisierten Informationen anzeigen kann.This interface allows the property of an object to notify a bound control that the property has changed, so that the control can display the updated information. Ohne das CallerMemberName-Attribut müssen Sie den Eigenschaftennamen als Literal angeben.Without the CallerMemberName attribute, you must specify the property name as a literal.

Im folgenden Diagramm sind die Membernamen aufgeführt, die beim Verwenden des CallerMemberName-Attributs zurückgegeben werden.The following chart shows the member names that are returned when you use the CallerMemberName attribute.

Aufrufe erfolgen innerhalb vonCall occurs within Ergebnis des MembernamensMember name result
Methode, Eigenschaft oder EreignisMethod, property, or event Der Name der Methode, der Eigenschaft oder des Ereignisses, aus dem bzw. aus der der Aufruf stammt.The name of the method, property, or event from which the call originated.
KonstruktorConstructor Die Zeichenfolge ".ctor"The string ".ctor"
Statischer KonstruktorStatic constructor Die Zeichenfolge ".cctor"The string ".cctor"
DestruktorDestructor Die Zeichenfolge "Finalize"The string "Finalize"
Benutzerdefinierte Operatoren oder KonvertierungenUser-defined operators or conversions Der generierte Name für den Member, beispielsweise "op_Addition".The generated name for the member, for example, "op_Addition".
AttributkonstruktorAttribute constructor Der Name des Members, auf den das Attribut angewendet wird.The name of the member to which the attribute is applied. 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.If the attribute is any element within a member (such as a parameter, a return value, or a generic type parameter), this result is the name of the member that's associated with that element.
Kein enthaltender Member (z. b. Assemblyebene oder Attribute, die auf Typen angewendet werden)No containing member (for example, assembly-level or attributes applied to types) Der Standardwert des optionalen Parameters.The default value of the optional parameter.

Konstruktoren

CallerMemberNameAttribute() CallerMemberNameAttribute() CallerMemberNameAttribute() CallerMemberNameAttribute()

Initialisiert eine neue Instanz der CallerMemberNameAttribute-Klasse.Initializes a new instance of the CallerMemberNameAttribute class.

Methoden

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

Gibt einen Wert zurück, der angibt, ob diese Instanz gleich einem angegebenen Objekt ist.Returns a value that indicates whether this instance is equal to a specified object.

(Inherited from Attribute)
GetHashCode() GetHashCode() GetHashCode() GetHashCode()

Gibt den Hashcode für diese Instanz zurück.Returns the hash code for this instance.

(Inherited from Attribute)
GetType() GetType() GetType() GetType()

Ruft den Type der aktuellen Instanz ab.Gets the Type of the current instance.

(Inherited from Object)
IsDefaultAttribute() IsDefaultAttribute() IsDefaultAttribute() IsDefaultAttribute()

Gibt beim Überschreiben in einer abgeleiteten Klasse an, ob der Wert der Instanz der Standardwert für die abgeleitete Klasse ist.When overridden in a derived class, indicates whether the value of this instance is the default value for the derived class.

(Inherited from Attribute)
Match(Object) Match(Object) Match(Object) Match(Object)

Beim Überschreiben in einer abgeleiteten Klasse wird ein Wert zurückgegeben, der angibt, ob diese Instanz einem bestimmten Objekt entspricht.When overridden in a derived class, returns a value that indicates whether this instance equals a specified object.

(Inherited from Attribute)
MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.Creates a shallow copy of the current Object.

(Inherited from Object)
ToString() ToString() ToString() ToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.Returns a string that represents the current object.

(Inherited from Object)

Explizite Schnittstellenimplementierungen

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

Ordnet eine Reihe von Namen einer entsprechenden Reihe von Dispatchbezeichnern zu.Maps a set of names to a corresponding set of dispatch identifiers.

(Inherited from Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) _Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) _Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) _Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Ruft die Typinformationen für ein Objekt ab, mit deren Hilfe die Typinformationen für eine Schnittstelle abgerufen werden können.Retrieves the type information for an object, which can be used to get the type information for an interface.

(Inherited from Attribute)
_Attribute.GetTypeInfoCount(UInt32) _Attribute.GetTypeInfoCount(UInt32) _Attribute.GetTypeInfoCount(UInt32) _Attribute.GetTypeInfoCount(UInt32)

Ruft die Anzahl der Schnittstellen mit Typinformationen ab, die von einem Objekt bereitgestellt werden (0 oder 1).Retrieves the number of type information interfaces that an object provides (either 0 or 1).

(Inherited from Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) _Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) _Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) _Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Stellt den Zugriff auf von einem Objekt verfügbar gemachte Eigenschaften und Methoden bereit.Provides access to properties and methods exposed by an object.

(Inherited from Attribute)

Eigenschaften

TypeId TypeId TypeId TypeId

Ruft bei Implementierung in einer abgeleiteten Klasse einen eindeutigen Bezeichner für dieses Attribute ab.When implemented in a derived class, gets a unique identifier for this Attribute.

(Inherited from Attribute)

Gilt für:

Siehe auch