Condividi tramite


Accesso ai membri predefiniti

Aggiornamento: novembre 2007

Tutti i tipi possono disporre di un membro predefinito, ossia di un membro che viene richiamato quando non si fornisce alcun nome. Nell'esempio che segue viene richiamato il membro predefinito di Class1 e il valore restituito viene assegnato a i.

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

I membri predefiniti sono contrassegnati con System.Reflection.DefaultMemberAttribute. Nell'esempio che segue viene illustrato come recuperare il membro predefinito recuperandone l'attributo personalizzato.

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

È possibile che risulti più semplice utilizzare Type.GetDefaultMembers, ottenendo esattamente lo stesso risultato. Se per il tipo è stato definito più di un membro predefinito, GetDefaultMembers genererà una InvalidOperationException. Nell'esempio di codice che segue viene illustrata la sintassi per l'utilizzo di GetDefaultMembers.

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

È possibile richiamare membri predefiniti chiamando Type.InvokeMember con String.Empty ("") come nome del membro. InvokeMember recupera DefaultMemberAttribute dal tipo, quindi lo richiama.

Vedere anche

Concetti

Visualizzazione delle informazioni sul tipo

Riferimenti

DefaultMemberAttribute

Type.GetDefaultMembers