访问默认成员

更新:2007 年 11 月

任何类型都可以具有默认成员,即在未给定任何成员名称时调用的成员。下面的示例调用 Class1 的默认成员,并将它返回的值赋给 i。

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

System.Reflection.DefaultMemberAttribute 标记默认成员。下面的示例显示如何通过检索默认成员的自定义属性来检索默认成员。

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

使用 Type.GetDefaultMembers 可能会简单一些,并且会生成完全相同的结果。但是,如果在类型上定义了多个默认成员,GetDefaultMembers 就会引发 InvalidOperationException。下面的代码示例显示 GetDefaultMembers 的语法。

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

可以通过调用 Type.InvokeMember(以 String.Empty ("") 作为成员名称)来调用默认成员。InvokeMember 将从类型中检索 DefaultMemberAttribute,然后调用它。

请参见

概念

查看类型信息

参考

DefaultMemberAttribute

Type.GetDefaultMembers