Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Todos los tipos pueden tener un miembro predeterminado, siendo éste el miembro que se invoca cuando no se especifica ningún nombre de miembro. En el ejemplo siguiente, se invoca el miembro predeterminado de Class1, y el valor que devuelve se asigna a i.
Dim i As Integer
Dim c As New Class1()
i = Convert.ToInt32(c)
Los miembros predeterminados se marcan con el atributo System.Reflection.DefaultMemberAttribute. En el ejemplo siguiente, se muestra cómo recuperar el miembro predeterminado recuperando el atributo personalizado.
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);
Quizás sea más sencillo utilizar Type.GetDefaultMembers, que genera exactamente el mismo resultado. Sin embargo, GetDefaultMembers produce una excepción InvalidOperationException si hay más de un miembro predeterminado definido en el tipo. En el siguiente ejemplo de código se muestra la sintaxis de GetDefaultMembers.
Dim memInfo As MemberInfo() = t.GetDefaultMembers()
MemberInfo[] memInfo = t.GetDefaultMembers();
Puede invocar a los miembros predeterminados llamando a Type.InvokeMember y utilizando String.Empty ("") como el nombre del miembro. InvokeMember recupera el atributo DefaultMemberAttribute del tipo y, a continuación, lo invoca.
Vea también
Referencia
DefaultMemberAttribute
Type.GetDefaultMembers