CallerMemberNameAttribute CallerMemberNameAttribute CallerMemberNameAttribute CallerMemberNameAttribute Class

Definizione

Consente di ottenere il nome del metodo o della proprietà del chiamante per il metodo.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
Ereditarietà
CallerMemberNameAttributeCallerMemberNameAttributeCallerMemberNameAttributeCallerMemberNameAttribute
Attributi

Esempi

Nell'esempio seguente viene illustrato l'utilizzo dell'attributo CallerMemberName.The following example shows how to use the CallerMemberName attribute. Per ogni chiamata al TraceMessage metodo, le informazioni sul chiamante vengono sostituite come argomento del parametro facoltativo.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

Commenti

L' CallerMemberName attributo viene applicato a un parametro facoltativo con un valore predefinito.You apply the CallerMemberName attribute to an optional parameter that has a default value. È necessario specificare un valore predefinito esplicito per il parametro facoltativo.You must specify an explicit default value for the optional parameter. Non è possibile applicare questo attributo ai parametri non specificati come facoltativi.You can't apply this attribute to parameters that aren't specified as optional.

Per ulteriori informazioni, vedere informazioni sul chiamante.For more information, see Caller Information.

È possibile utilizzare l'attributo CallerMemberName per specificare il nome del membro come argomento String al metodo chiamato.You can use the CallerMemberName attribute to avoid specifying the member name as a String argument to the called method. Usando questa tecnica, si evita il problema per cui il refactoring di ridenominazione non modifica i valori String.By using this technique, you avoid the problem that Rename Refactoring doesn't change the String values. Questa operazione è particolarmente utile per le attività seguenti:This is especially useful for the following tasks:

  • Utilizzo della tracciatura e delle routine di diagnostica.Using tracing and diagnostic routines.

  • Implementazione dell'interfaccia INotifyPropertyChanged durante l'associazione dei dati.Implementing the INotifyPropertyChanged interface when binding data. Questa interfaccia consente alla proprietà di un oggetto di notificare a un controllo associato la modifica della proprietà stessa in modo che il controllo possa visualizzare le informazioni aggiornate.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. Senza l'attributo CallerMemberName, è necessario specificare il nome della proprietà come valore letterale.Without the CallerMemberName attribute, you must specify the property name as a literal.

Nel grafico seguente vengono mostrati i nomi dei membri restituiti quando si utilizza l'attributo CallerMemberName.The following chart shows the member names that are returned when you use the CallerMemberName attribute.

Chiamata eseguita entroCall occurs within Nome del membro restituitoMember name result
Metodo, proprietà o eventoMethod, property, or event Nome del metodo, della proprietà o dell'evento da cui la chiamata ha avuto origine.The name of the method, property, or event from which the call originated.
CostruttoreConstructor Stringa ".ctor"The string ".ctor"
Costruttore staticoStatic constructor Stringa ".cctor"The string ".cctor"
DistruttoreDestructor Stringa "Finalize"The string "Finalize"
Operatori o conversioni definiti dall'utenteUser-defined operators or conversions Nome generato per il membro, ad esempio "op_Addition".The generated name for the member, for example, "op_Addition".
Costruttore dell'attributoAttribute constructor Nome del membro a cui viene applicato l'attributo.The name of the member to which the attribute is applied. Se l'attributo è un qualsiasi elemento in un membro (ad esempio un parametro, un valore restituito o un parametro di tipo generico), il risultato è il nome del membro associato a tale elemento.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.
Nessun membro contenitore (ad esempio, a livello di assembly o attributi applicati ai tipi)No containing member (for example, assembly-level or attributes applied to types) Valore predefinito del parametro facoltativo.The default value of the optional parameter.

Costruttori

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

Inizializza una nuova istanza della classe CallerMemberNameAttribute.Initializes a new instance of the CallerMemberNameAttribute class.

Metodi

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

Restituisce un valore che indica se questa istanza è uguale a un oggetto specificato.Returns a value that indicates whether this instance is equal to a specified object.

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

Restituisce il codice hash per l'istanza.Returns the hash code for this instance.

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

Ottiene l'oggetto Type dell'istanza corrente.Gets the Type of the current instance.

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

In caso di override in una classe derivata, indica se il valore di questa istanza è il valore predefinito per la classe derivata.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)

Quando è sottoposto a override in una classe derivata, restituisce un valore che indica se questa istanza equivale a un oggetto specificato.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()

Crea una copia superficiale dell'oggetto Object corrente.Creates a shallow copy of the current Object.

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

Restituisce una stringa che rappresenta l'oggetto corrente.Returns a string that represents the current object.

(Inherited from Object)

Implementazioni dell'interfaccia esplicita

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

Esegue il mapping di un set di nomi a un set corrispondente di ID dispatch.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)

Recupera le informazioni sul tipo relative a un oggetto, che possono essere usate per ottenere informazioni sul tipo relative a un'interfaccia.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)

Recupera il numero delle interfacce di informazioni sul tipo fornite da un oggetto (0 o 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)

Fornisce l'accesso a proprietà e metodi esposti da un oggetto.Provides access to properties and methods exposed by an object.

(Inherited from Attribute)

Proprietà

TypeId TypeId TypeId TypeId

Quando è implementata in una classe derivata, ottiene un identificatore univoco della classe Attribute.When implemented in a derived class, gets a unique identifier for this Attribute.

(Inherited from Attribute)

Si applica a

Vedi anche