CallerMemberNameAttribute CallerMemberNameAttribute CallerMemberNameAttribute CallerMemberNameAttribute Class

Definicja

Można uzyskać nazwę metody lub właściwości obiektu wywołującego metody.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
Dziedziczenie
CallerMemberNameAttributeCallerMemberNameAttributeCallerMemberNameAttributeCallerMemberNameAttribute
Atrybuty

Przykłady

Poniższy przykład pokazuje, jak używać CallerMemberName atrybutu.The following example shows how to use the CallerMemberName attribute. Przy każdym wywołaniu TraceMessage metody, informacje o wywołującym są podstawiane jako argument do opcjonalnego parametru.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

Uwagi

Należy zastosować CallerMemberName atrybutu opcjonalnym parametrem, który ma wartość domyślną.You apply the CallerMemberName attribute to an optional parameter that has a default value. Należy określić wartość jawne Tworzenie domyślnych dla parametru opcjonalnego.You must specify an explicit default value for the optional parameter. Ten atrybut nie można zastosować do parametrów, które nie są określone jako opcjonalne.You can't apply this attribute to parameters that aren't specified as optional.

Aby uzyskać więcej informacji, zobacz informacje o wywołującym.For more information, see Caller Information.

Możesz użyć CallerMemberName atrybutu, aby uniknąć określania nazwy elementu członkowskiego jako String argument wywoływanej metody.You can use the CallerMemberName attribute to avoid specifying the member name as a String argument to the called method. Korzystając z tej techniki, można uniknąć problemu, Refaktoryzacja zmiany nazwy nie zmienia String wartości.By using this technique, you avoid the problem that Rename Refactoring doesn't change the String values. Jest to szczególnie przydatne w przypadku następujących zadań:This is especially useful for the following tasks:

  • Używanie procedur do śledzenia i diagnostycznych.Using tracing and diagnostic routines.

  • Implementowanie INotifyPropertyChanged interfejs podczas wiązania danych.Implementing the INotifyPropertyChanged interface when binding data. Ten interfejs umożliwia właściwości obiektu powiadamianie powiązanego formantu, że właściwość zmieniła się, dzięki czemu formant może wyświetlić zaktualizowane informacje.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. Bez CallerMemberName atrybutu, należy określić nazwę właściwości jako literał.Without the CallerMemberName attribute, you must specify the property name as a literal.

W poniższej tabeli przedstawiono składowej, nazwy, które są zwracane, gdy używasz CallerMemberName atrybutu.The following chart shows the member names that are returned when you use the CallerMemberName attribute.

Wywołanie ma miejsce wCall occurs within Wynikowa nazwa elementu członkowskiegoMember name result
Metoda, właściwość lub zdarzenieMethod, property, or event Nazwa metody, właściwości lub zdarzenia, gdzie zainicjowane było wywołanie.The name of the method, property, or event from which the call originated.
KonstruktorConstructor Ciąg „.ctor”The string ".ctor"
Statyczny konstruktorStatic constructor Ciąg „.cctor”The string ".cctor"
DestruktorDestructor Ciąg „Finalize”.The string "Finalize"
Zdefiniowane przez użytkownika operatory lub konwersjeUser-defined operators or conversions Nazwa wygenerowana dla elementu członkowskiego, na przykład „op_Addition”.The generated name for the member, for example, "op_Addition".
Konstruktor atrybutuAttribute constructor Nazwa elementu członkowskiego, do którego został zastosowany atrybut.The name of the member to which the attribute is applied. Jeśli atrybut jest dowolnym elementem elementu członkowskiego (takim jak parametr, wartość zwracana lub parametr typu ogólnego), to wynikiem jest nazwa elementu członkowskiego, który jest skojarzony z tym elementem.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.
Brak nadrzędnego elementu członkowskiego (na przykład poziom zestawu lub atrybuty stosowane do typów)No containing member (for example, assembly-level or attributes applied to types) Wartość domyślna opcjonalnego parametru.The default value of the optional parameter.

Konstruktory

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

Inicjuje nowe wystąpienie klasy CallerMemberNameAttribute klasy.Initializes a new instance of the CallerMemberNameAttribute class.

Metody

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

Zwraca wartość wskazującą, czy to wystąpienie jest równe podanemu obiektowi.Returns a value that indicates whether this instance is equal to a specified object.

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

Zwraca kod skrótu dla tego wystąpienia.Returns the hash code for this instance.

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

Pobiera Type bieżącego wystąpienia.Gets the Type of the current instance.

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

W przypadku przesłonięcia w klasie pochodnej, wskazuje, czy wartość tego wystąpienia jest wartością domyślną dla klasy pochodnej.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)

Po przesłonięciu w klasie pochodnej zwraca wartość, która wskazuje, czy to wystąpienie jest równe podanemu obiektowi.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()

Tworzy płytką kopię bieżącego Object.Creates a shallow copy of the current Object.

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

Zwraca ciąg, który reprezentuje bieżący obiekt.Returns a string that represents the current object.

(Inherited from Object)

Jawne implementacje interfejsu

_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)

Zestaw nazw jest mapowany na odpowiedni zestaw identyfikatorów wysyłania.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)

Pobiera informacje o typie dla obiektu, który można pobrać informacji o typie interfejsu.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)

Pobiera informację o liczbie typów interfejsów, jakie zawiera obiekt (0 lub 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)

Umożliwia dostęp do właściwości i metod udostępnianych przez obiekt.Provides access to properties and methods exposed by an object.

(Inherited from Attribute)

Właściwości

TypeId TypeId TypeId TypeId

Po zaimplementowaniu w klasie pochodnej pobiera unikatowy identyfikator dla tego Attribute.When implemented in a derived class, gets a unique identifier for this Attribute.

(Inherited from Attribute)

Dotyczy

Zobacz też