CallerMemberNameAttribute Klasa
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Tagi parametru, który powinien być wypełniony określoną nazwą elementu członkowskiego wywołującego.
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
- Dziedziczenie
- Atrybuty
Przykłady
W poniższym przykładzie pokazano, jak używać atrybutu CallerMemberName . W każdym wywołaniu TraceMessage metody informacje wywołujące są zastępowane jako argument opcjonalny parametru.
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
Atrybut jest stosowany do opcjonalnego parametru CallerMemberName , który ma wartość domyślną. Musisz określić jawną wartość domyślną parametru opcjonalnego. Nie można zastosować tego atrybutu do parametrów, które nie są określone jako opcjonalne.
Możesz użyć atrybutu CallerMemberName, aby uniknąć określania nazwy składowej jako argumentu String do wywoływanej metody. Korzystając z tej techniki, unikniesz problemu, że Refaktoryzacja Zmiany Nazwy nie zmienia String wartości. Jest to szczególnie przydatne w przypadku następujących zadań:
Korzystanie z procedur śledzenia i diagnostyki.
Implementowanie interfejsu INotifyPropertyChanged podczas wiązania danych. Ten interfejs umożliwia właściwości obiektu powiadamianie powiązanej kontrolki o zmianie właściwości, dzięki czemu kontrolka może wyświetlać zaktualizowane informacje. Jeśli nie ma atrybutu
CallerMemberName, należy podać nazwę właściwości jako literał.
Na poniższym wykresie przedstawiono nazwy członków zwracane podczas używania atrybutu CallerMemberName.
| Wywołanie odbywa się w obrębie | Rezultat związany z nazwą członka |
|---|---|
| Metoda, właściwość lub zdarzenie | Nazwa metody, właściwości lub zdarzenia, z którego pochodzi wywołanie. |
| Konstruktor | Ciąg ".ctor" |
| Konstruktor statyczny | Ciąg ".cctor" |
| Destruktor | Ciąg "Finalizuj" |
| Operatory lub konwersje zdefiniowane przez użytkownika | Wygenerowana nazwa dla członka, na przykład "op_Addition". |
| Konstruktor atrybutu | Nazwa członka, do którego atrybut jest stosowany. Jeśli atrybut jest dowolnym elementem w elemencie członkowskim (takim jak parametr, wartość zwracana lub parametr typu ogólnego), ten wynik jest nazwą elementu członkowskiego skojarzonego z tym elementem. |
| Brak elementu członkowskiego zawierającego (na przykład na poziomie zestawu lub atrybutów stosowanych do typów) | Wartość domyślna opcjonalnego parametru. |
Konstruktory
| Nazwa | Opis |
|---|---|
| CallerMemberNameAttribute() |
Inicjuje nowe wystąpienie klasy CallerMemberNameAttribute. |
Właściwości
| Nazwa | Opis |
|---|---|
| TypeId |
Po zaimplementowaniu w klasie pochodnej pobiera unikatowy identyfikator dla tego Attribute. (Odziedziczone po Attribute) |
Metody
| Nazwa | Opis |
|---|---|
| Equals(Object) |
Zwraca wartość wskazującą, czy to wystąpienie jest równe określonemu obiektowi. (Odziedziczone po Attribute) |
| GetHashCode() |
Zwraca kod skrótu dla tego wystąpienia. (Odziedziczone po Attribute) |
| GetType() |
Pobiera Type bieżącego wystąpienia. (Odziedziczone po Object) |
| IsDefaultAttribute() |
Po zastąpieniu w klasie pochodnej wskazuje, czy wartość tego wystąpienia jest wartością domyślną dla klasy pochodnej. (Odziedziczone po Attribute) |
| Match(Object) |
Po zastąpieniu w klasie pochodnej zwraca wartość wskazującą, czy to wystąpienie jest równe określonemu obiektowi. (Odziedziczone po Attribute) |
| MemberwiseClone() |
Tworzy płytkią kopię bieżącego Object. (Odziedziczone po Object) |
| ToString() |
Zwraca ciąg reprezentujący bieżący obiekt. (Odziedziczone po Object) |
Jawne implementacje interfejsu
| Nazwa | Opis |
|---|---|
| _Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) |
Zestaw nazw jest mapowany na odpowiedni zestaw identyfikatorów wysyłania. (Odziedziczone po Attribute) |
| _Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) |
Pobiera informacje o typie obiektu, którego można użyć do uzyskania informacji o typie dla interfejsu. (Odziedziczone po Attribute) |
| _Attribute.GetTypeInfoCount(UInt32) |
Pobiera informację o liczbie typów interfejsów, jakie zawiera obiekt (0 lub 1). (Odziedziczone po Attribute) |
| _Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) |
Zapewnia dostęp do właściwości i metod uwidocznionych przez obiekt. (Odziedziczone po Attribute) |