CallerMemberNameAttribute Class

Définition

Permet d'obtenir le nom de méthode ou de propriété de l'appelant de la méthode. Allows you to obtain the method or property name of the caller to the method.

[System.AttributeUsage(System.AttributeTargets.Parameter, Inherited=false)]
public sealed class CallerMemberNameAttribute : Attribute
Héritage
CallerMemberNameAttribute
Attributs

Exemples

L'exemple suivant montre comment utiliser l'attribut CallerMemberName.The following example shows how to use the CallerMemberName attribute. Sur chaque appel à la TraceMessage (méthode), les informations de l’appelant est substituée en tant qu’argument au paramètre facultatif.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

Remarques

Vous appliquez le CallerMemberName d’attribut à un paramètre optionnel qui a comme valeur par défaut.You apply the CallerMemberName attribute to an optional parameter that has a default value. Vous devez spécifier une valeur par défaut explicite pour le paramètre facultatif.You must specify an explicit default value for the optional parameter. Vous ne pouvez pas appliquer cet attribut à des paramètres qui ne sont pas spécifiés comme facultatifs.You can't apply this attribute to parameters that aren't specified as optional.

Pour plus d’informations, consultez informations appelant.For more information, see Caller Information.

Vous pouvez utiliser l'attribut CallerMemberName pour éviter de spécifier le nom du membre comme argument de String à la méthode appelée.You can use the CallerMemberName attribute to avoid specifying the member name as a String argument to the called method. Vous évitez ainsi le problème que la refactorisation de changement de nom ne modifie pas les valeurs String.By using this technique, you avoid the problem that Rename Refactoring doesn't change the String values. Cela est particulièrement utile pour les tâches suivantes :This is especially useful for the following tasks:

  • Utilisation du traçage et des programmes de diagnostic.Using tracing and diagnostic routines.

  • Implémentation de l'interface INotifyPropertyChanged lors de la liaison de données.Implementing the INotifyPropertyChanged interface when binding data. Cette interface permet à la propriété d'un objet de signaler à un contrôle dépendant que la propriété a été modifiée, afin que ce contrôle puisse afficher les informations mises à jour.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. Sans attribut CallerMemberName, vous devez spécifier le nom de la propriété comme littéral.Without the CallerMemberName attribute, you must specify the property name as a literal.

Le graphique suivant affiche les noms des membres qui sont retournés lorsque vous utilisez l'attribut CallerMemberName.The following chart shows the member names that are returned when you use the CallerMemberName attribute.

Appel se produit dansCall occurs within Résultat de nom de membreMember name result
Méthode, propriété ou événementMethod, property, or event Le nom de la méthode, la propriété ou l'événement dont l'appel est originaire.The name of the method, property, or event from which the call originated.
ConstructeurConstructor La chaîne « .ctor »The string ".ctor"
Constructeur statiqueStatic constructor La chaîne « .cctor »The string ".cctor"
DestructeurDestructor La chaîne « finalize »The string "Finalize"
Opérateurs définis par l'utilisateur ou conversionsUser-defined operators or conversions Le nom généré pour le membre, par exemple, « op_Addition ».The generated name for the member, for example, "op_Addition".
Constructeur d'attributAttribute constructor Le nom du membre auquel l'attribut est appliqué.The name of the member to which the attribute is applied. Si l'attribut est un élément dans un membre (tel qu'un paramètre, une valeur de retour, ou un paramètre de type générique), le résultat est le nom du membre qui est associé à cet élément.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.
Aucun membre contenant (par exemple, au niveau de l’assembly ou attributs appliqués aux types)No containing member (for example, assembly-level or attributes applied to types) Valeur par défaut du paramètre optionnel.The default value of the optional parameter.

Constructeurs

CallerMemberNameAttribute()

Initialise une nouvelle instance de la classe CallerMemberNameAttribute. Initializes a new instance of the CallerMemberNameAttribute class.

Méthodes

Equals(Object)

Retourne une valeur qui indique si cette instance est égale à un objet spécifié. Returns a value that indicates whether this instance is equal to a specified object.

(Inherited from Attribute)
GetHashCode()

Retourne le code de hachage de cette instance. Returns the hash code for this instance.

(Inherited from Attribute)
GetType()

Obtient le Type de l'instance actuelle. Gets the Type of the current instance.

(Inherited from Object)
IsDefaultAttribute()

En cas de substitution dans une classe dérivée, indique si la valeur de cette instance est la valeur par défaut pour la classe dérivée. 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)

En cas de substitution dans une classe dérivée, retourne une valeur indiquant si cette instance équivaut à un objet spécifié. When overridden in a derived class, returns a value that indicates whether this instance equals a specified object.

(Inherited from Attribute)
MemberwiseClone()

Crée une copie superficielle du Object actuel. Creates a shallow copy of the current Object.

(Inherited from Object)
ToString()

Retourne une chaîne qui représente l'objet actuel. Returns a string that represents the current object.

(Inherited from Object)

Implémentations d’interfaces explicites

_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Mappe un jeu de noms avec un jeu correspondant d'identificateurs de dispatch. Maps a set of names to a corresponding set of dispatch identifiers.

(Inherited from Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Récupère les informations de type pour un objet, qui peuvent être utilisées pour obtenir les informations de type d'une interface. 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)

Récupère le nombre d'interfaces d'informations de type fourni par un objet (0 ou 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)

Fournit l'accès aux propriétés et aux méthodes exposées par un objet. Provides access to properties and methods exposed by an object.

(Inherited from Attribute)

Propriétés

TypeId

Lors de l'implémentation dans une classe dérivée, obtient un identificateur unique pour l'objet Attribute. When implemented in a derived class, gets a unique identifier for this Attribute.

(Inherited from Attribute)

S’applique à

Voir aussi