CallerMemberNameAttribute CallerMemberNameAttribute CallerMemberNameAttribute CallerMemberNameAttribute Class

Definice

Umožňuje získat název metody nebo vlastnosti volající 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
Dědičnost
CallerMemberNameAttributeCallerMemberNameAttributeCallerMemberNameAttributeCallerMemberNameAttribute
Atributy

Příklady

Následující příklad ukazuje, jak použít CallerMemberName atribut.The following example shows how to use the CallerMemberName attribute. Při každém volání TraceMessage metody jsou informace o volajícím nahrazeny jako argument volitelného 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

Poznámky

Použijte CallerMemberName atribut na volitelný parametr, který má výchozí hodnotu.You apply the CallerMemberName attribute to an optional parameter that has a default value. Je nutné zadat explicitní výchozí hodnotu pro volitelný parametr.You must specify an explicit default value for the optional parameter. Tento atribut nemůžete použít u parametrů, které nejsou určené jako volitelné.You can't apply this attribute to parameters that aren't specified as optional.

Další informace najdete v tématu informace o volajícím.For more information, see Caller Information.

CallerMemberName Atribut lze použít k zamezení zadání názvu člena String jako argumentu volané metody.You can use the CallerMemberName attribute to avoid specifying the member name as a String argument to the called method. Pomocí této techniky se vyhnete problému s tím, že refaktoring přejmenování String hodnoty nemění.By using this technique, you avoid the problem that Rename Refactoring doesn't change the String values. To je užitečné hlavně pro následující úlohy:This is especially useful for the following tasks:

  • Použití trasování a diagnostických rutin.Using tracing and diagnostic routines.

  • INotifyPropertyChanged Implementace rozhraní při vázání dat.Implementing the INotifyPropertyChanged interface when binding data. Toto rozhraní umožňuje vlastnosti objektu oznámit vázanému ovládacímu prvku, že došlo ke změně vlastnosti, aby ovládací prvek mohl zobrazit aktualizované informace.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. CallerMemberName Bez atributu je nutné zadat název vlastnosti jako literál.Without the CallerMemberName attribute, you must specify the property name as a literal.

Následující graf znázorňuje názvy členů, které jsou vráceny při použití CallerMemberName atributu.The following chart shows the member names that are returned when you use the CallerMemberName attribute.

Volání probíhá v rámciCall occurs within Výsledek názvu členuMember name result
Metoda, vlastnost nebo událostMethod, property, or event Název metody, vlastnosti nebo události, z nichž bylo volání provedeno.The name of the method, property, or event from which the call originated.
KonstruktorConstructor Řetězec „.ctor“The string ".ctor"
Statický konstruktorStatic constructor Řetězec „.cctor“The string ".cctor"
DestruktorDestructor Řetězec „Finalize“The string "Finalize"
Operátory nebo převody definované uživatelemUser-defined operators or conversions Vygenerovaný název pro člen, například „op_Addition“.The generated name for the member, for example, "op_Addition".
Konstruktor atributuAttribute constructor Název členu, na který se atribut používá.The name of the member to which the attribute is applied. Pokud je atribut libovolný prvek v členu (například parametr, návratová hodnota nebo parametr obecného typu), je tento výsledek názvem členu, který je přidružen k tomuto prvku.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.
Žádný obsahující člen (například atributy na úrovni sestavení nebo atributy použité na typy)No containing member (for example, assembly-level or attributes applied to types) Výchozí hodnota volitelného parametru.The default value of the optional parameter.

Konstruktory

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

Inicializuje novou instanci třídy CallerMemberNameAttribute třídy.Initializes a new instance of the CallerMemberNameAttribute class.

Metody

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

Vrací hodnotu, která určuje, zda je tato instance rovna zadanému objektu.Returns a value that indicates whether this instance is equal to a specified object.

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

Vrátí kód hash této instance.Returns the hash code for this instance.

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

Získá Type aktuální instance.Gets the Type of the current instance.

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

Při přepsání v odvozené třídě označuje, zda je hodnota této instance výchozí hodnotou pro odvozenou třídu.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)

Při přepsání v odvozené třídě vrátí hodnotu, která označuje, zda je tato instance rovna zadanému objektu.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()

Vytvoří Mělkou kopii aktuální Object.Creates a shallow copy of the current Object.

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

Vrací řetězec, který představuje aktuální objekt.Returns a string that represents the current object.

(Inherited from Object)

Explicitní implementace rozhraní

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

Mapuje sadu názvů na odpovídající sadu identifikátorů pro rozesílání.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)

Načte informace o typu pro objekt, který lze použít k získání informací o typu pro rozhraní.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)

Získá počet rozhraní typu informací, které objekt poskytuje (0 nebo 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)

Poskytuje přístup k vlastnostem a metodám vystaveným objektem.Provides access to properties and methods exposed by an object.

(Inherited from Attribute)

Vlastnosti

TypeId TypeId TypeId TypeId

Při implementaci v odvozené třídě získá jedinečný identifikátor Attribute.When implemented in a derived class, gets a unique identifier for this Attribute.

(Inherited from Attribute)

Platí pro

Viz také