Condividi tramite


Accesso ai membri predefiniti

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 da 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, che produce esattamente lo stesso risultato. Se per il tipo si è 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 un membro predefinito chiamando Type.InvokeMember con String.Empty ("") come nome del membro. InvokeMember recupera DefaultMemberAttribute dal tipo, quindi lo richiama.

Vedere anche

Riferimenti

DefaultMemberAttribute
Type.GetDefaultMembers

Concetti

Visualizzazione delle informazioni sul tipo