CallerMemberNameAttribute CallerMemberNameAttribute CallerMemberNameAttribute CallerMemberNameAttribute Class

Definición

Permite obtener el nombre de método o propiedad del llamador al método.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
Herencia
CallerMemberNameAttributeCallerMemberNameAttributeCallerMemberNameAttributeCallerMemberNameAttribute
Atributos

Ejemplos

En el ejemplo siguiente se muestra cómo utilizar el atributo CallerMemberName.The following example shows how to use the CallerMemberName attribute. En cada llamada a la TraceMessage método, la información del llamador se sustituye como argumento para el parámetro opcional.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

Comentarios

Aplica el CallerMemberName atributo a un parámetro opcional que tiene un valor predeterminado.You apply the CallerMemberName attribute to an optional parameter that has a default value. Debe especificar un valor predeterminado explícito para el parámetro opcional.You must specify an explicit default value for the optional parameter. No se puede aplicar este atributo a los parámetros que no se especifican como opcionales.You can't apply this attribute to parameters that aren't specified as optional.

Para obtener más información, consulte información del llamador.For more information, see Caller Information.

Se puede utilizar el atributo CallerMemberName para evitar especificar el nombre de miembro como un argumento String para el método llamado.You can use the CallerMemberName attribute to avoid specifying the member name as a String argument to the called method. Mediante esta técnica, se evita el problema de que la refactorización de cambio de nombre no cambie los valores String.By using this technique, you avoid the problem that Rename Refactoring doesn't change the String values. Esto es especialmente útil para las siguientes tareas:This is especially useful for the following tasks:

  • Usar el seguimiento y las rutinas de diagnóstico.Using tracing and diagnostic routines.

  • Implementar la interfaz INotifyPropertyChanged al enlazar datos.Implementing the INotifyPropertyChanged interface when binding data. Esta interfaz permite que la propiedad de un objeto notifique a un control enlazado que la propiedad ha cambiado, de forma que el control pueda mostrar información actualizada.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. Sin el atributo CallerMemberName, se debe especificar el nombre de propiedad como un literal.Without the CallerMemberName attribute, you must specify the property name as a literal.

En el gráfico siguiente se muestran los nombres de miembro que se devuelven cuando se utiliza el atributo CallerMemberName.The following chart shows the member names that are returned when you use the CallerMemberName attribute.

Se produce dentro de la llamadaCall occurs within Resultado del nombre de miembroMember name result
Método, propiedad o eventoMethod, property, or event Nombre del método, propiedad o evento en el que se originó la llamada.The name of the method, property, or event from which the call originated.
ConstructorConstructor Cadena ".ctor"The string ".ctor"
Constructor estáticoStatic constructor Cadena ".cctor"The string ".cctor"
DestructorDestructor Cadena "Finalize"The string "Finalize"
Conversiones u operadores definidos por el usuarioUser-defined operators or conversions Nombre generado para el miembro, por ejemplo, "op_Addition".The generated name for the member, for example, "op_Addition".
Constructor de atributoAttribute constructor Nombre del miembro al que se aplica el atributo.The name of the member to which the attribute is applied. Si el atributo es cualquier elemento dentro de un miembro (como un parámetro, un valor devuelto o un parámetro de tipo genérico), el resultado es el nombre del miembro asociado a este 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.
Ningún miembro contenedor (por ejemplo, el nivel de ensamblado o atributos que se aplican a tipos)No containing member (for example, assembly-level or attributes applied to types) El valor predeterminado del parámetro opcional.The default value of the optional parameter.

Constructores

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

Inicializa una nueva instancia de la clase CallerMemberNameAttribute.Initializes a new instance of the CallerMemberNameAttribute class.

Métodos

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

Devuelve un valor que indica si esta instancia es igual que un objeto especificado.Returns a value that indicates whether this instance is equal to a specified object.

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

Devuelve el código hash de esta instancia.Returns the hash code for this instance.

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

Obtiene el Type de la instancia actual.Gets the Type of the current instance.

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

Si se reemplaza en una clase derivada, indica si el valor de esta instancia es el valor predeterminado de la clase derivada.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)

Cuando se invalida en una clase derivada, devuelve un valor que indica si esta instancia es igual a un objeto especificado.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 superficial del Object actual.Creates a shallow copy of the current Object.

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

Devuelve una cadena que representa el objeto actual.Returns a string that represents the current object.

(Inherited from Object)

Implementaciones de interfaz explícitas

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

Asigna un conjunto de nombres a un conjunto correspondiente de identificadores de envío.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)

Obtiene la información de tipos de un objeto, que puede utilizarse para obtener la información de tipos de una interfaz.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 el número de interfaces de información de tipo que proporciona un objeto (0 ó 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)

Proporciona acceso a las propiedades y los métodos expuestos por un objeto.Provides access to properties and methods exposed by an object.

(Inherited from Attribute)

Propiedades

TypeId TypeId TypeId TypeId

Cuando se implementa en una clase derivada, obtiene un identificador único para este Attribute.When implemented in a derived class, gets a unique identifier for this Attribute.

(Inherited from Attribute)

Se aplica a

Consulte también: