Partager via


CallerMemberNameAttribute Classe

Définition

Paramètre d’étiquettes qui doit être rempli avec un nom de membre d’appelant spécifique.

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
Héritage
CallerMemberNameAttribute
Attributs

Exemples

L’exemple suivant montre comment utiliser l’attribut CallerMemberName . Sur chaque appel à la TraceMessage méthode, les informations de l’appelant sont substituées en tant qu’argument au paramètre facultatif.

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 l’attribut CallerMemberName à un paramètre facultatif qui a une valeur par défaut. Vous devez spécifier une valeur par défaut explicite pour le paramètre facultatif. Vous ne pouvez pas appliquer cet attribut aux paramètres qui ne sont pas spécifiés comme facultatifs.

Vous pouvez utiliser l’attribut CallerMemberName pour éviter de spécifier le nom du membre comme String argument de la méthode appelée. Vous évitez ainsi le problème que la refactorisation de changement de nom ne modifie pas les valeurs String. Cela est particulièrement utile pour les tâches suivantes :

  • Utilisation de routines de suivi et de diagnostic.

  • Implémenter l’interface INotifyPropertyChanged lors de la liaison de données. Cette interface permet à la propriété d’un objet d’avertir un contrôle lié que la propriété a changé, afin que le contrôle puisse afficher les informations mises à jour. Sans l’attribut CallerMemberName , vous devez spécifier le nom de propriété en tant que littéral.

Le graphique suivant montre les noms de membres retournés lorsque vous utilisez l’attribut CallerMemberName .

L’appel se produit dans Résultat pour le nom du membre
Méthode, propriété ou événement Nom de la méthode, de la propriété ou de l’événement à partir duquel l’appel provient.
Constructor La chaîne « .ctor »
Constructeur statique La chaîne « .cctor »
Destructeur La chaîne « finalize »
Opérateurs ou conversions définis par l’utilisateur Nom généré pour le membre, par exemple « op_Addition ».
Constructeur d’attribut Nom du membre auquel l’attribut est appliqué. Si l’attribut est un élément au sein d’un membre (tel qu’un paramètre, une valeur de retour ou un paramètre de type générique), ce résultat est le nom du membre associé à cet élément.
Aucun membre ne contenant (par exemple, les attributs au niveau de l’assembly ou appliqués aux types) Valeur par défaut du paramètre facultatif.

Constructeurs

Nom Description
CallerMemberNameAttribute()

Initialise une nouvelle instance de la classe CallerMemberNameAttribute.

Propriétés

Nom Description
TypeId

En cas d’implémentation dans une classe dérivée, obtient un identificateur unique pour cette Attribute.

(Hérité de Attribute)

Méthodes

Nom Description
Equals(Object)

Retourne une valeur qui indique si cette instance est égale à un objet spécifié.

(Hérité de Attribute)
GetHashCode()

Retourne le code de hachage pour cette instance.

(Hérité de Attribute)
GetType()

Obtient la Type de l’instance actuelle.

(Hérité de 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 de la classe dérivée.

(Hérité de Attribute)
Match(Object)

En cas de substitution dans une classe dérivée, retourne une valeur qui indique si cette instance est égale à un objet spécifié.

(Hérité de Attribute)
MemberwiseClone()

Crée une copie superficielle du Objectactuel.

(Hérité de Object)
ToString()

Retourne une chaîne qui représente l’objet actuel.

(Hérité de Object)

Implémentations d’interfaces explicites

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

Mappe un jeu de noms avec un jeu correspondant d'identificateurs de dispatch.

(Hérité de Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Récupère les informations de type d’un objet, qui peuvent être utilisées pour obtenir les informations de type d’une interface.

(Hérité de Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Récupère le nombre d'interfaces d'informations de type fourni par un objet (0 ou 1).

(Hérité de Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Fournit l’accès aux propriétés et méthodes exposées par un objet.

(Hérité de Attribute)

S’applique à

Voir aussi