既定のメンバへのアクセス

すべての型が、既定のメンバを持つことができます。既定のメンバは、メンバ名を指定しなかったときに呼び出されるメンバです。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 を使用する方が簡単な場合もあります。ただし、型に既定のメンバが複数定義されている場合、GetDefaultMembersInvalidOperationException をスローします。GetDefaultMembers の構文を示すコード例を次に示します。

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

Type.InvokeMember を呼び出すときにメンバ名に String.Empty ("") を指定すると、既定のメンバを呼び出すことができます。InvokeMember は、その型から DefaultMemberAttribute を取得した後、既定のメンバを呼び出します。

参照

関連項目

DefaultMemberAttribute
Type.GetDefaultMembers

概念

型情報の表示