Partager via


Accès aux membres par défaut

Mise à jour : novembre 2007

Tous les types peuvent posséder un membre par défaut, lequel est un membre appelé lorsque aucun nom de membre n'est donné. L'exemple suivant appelle le membre par défaut de Class1 et la valeur retournée est assignée à i.

Dim i As Integer
Dim c As New Class1()
i = Convert.ToInt32(c)

Les membres par défaut sont marqués avec System.Reflection.DefaultMemberAttribute. L'exemple suivant montre comment récupérer le membre par défaut à partir de son attribut personnalisé.

Dim t As Type = GetType(DefaultMemberAttribute)
Dim defMem As DefaultMemberAttribute = CType(Attribute.GetCustomAttribute([Assembly].GetAssembly(t), t), DefaultMemberAttribute)
Dim memInfo As MemberInfo() = t.GetMember(defMem.MemberName)
Type t = typeof(DefaultMemberAttribute);
DefaultMemberAttribute defMem = (DefaultMemberAttribute)Attribute.GetCustomAttribute(Assembly.GetAssembly(t), t);
MemberInfo[] memInfo = t.GetMember(defMem.MemberName);

Il peut être plus simple d'utiliser Type.GetDefaultMembers, qui produit exactement le même résultat. Cependant, GetDefaultMembers lève InvalidOperationException si plusieurs membres par défaut sont définis sur le type. L'exemple de code suivant montre la syntaxe de GetDefaultMembers.

Dim memInfo As MemberInfo() = t.GetDefaultMembers()
MemberInfo[] memInfo = t.GetDefaultMembers();

Pour appeler des membres par défaut, utilisez Type.InvokeMember avec String.Empty ("") comme nom de membre. InvokeMember récupère DefaultMemberAttribute à partir du type avant de l'appeler.

Voir aussi

Concepts

Affichage des informations de type

Référence

DefaultMemberAttribute

Type.GetDefaultMembers