Compartir a través de


Acceso a miembros predeterminados

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

Conceptos

Ver información de tipos