存取預設成員

更新: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();

您可以使用 String.Empty ("") 做為成員名稱來呼叫 Type.InvokeMember,以便能叫用 (Invoke) 預設成員。InvokeMember 會從型別擷取 DefaultMemberAttribute,並接著叫用它。

請參閱

概念

檢視型別資訊

參考

DefaultMemberAttribute

Type.GetDefaultMembers