アセンブリに定義されているすべての型情報を取得したい場合はAssembly.GetTypesメソッドあるいはAssembly.GetExportedTypesメソッドを使用します。
GetTypesメソッドではアセンブリに含まれるすべての型が返されるのに対して、GetExportedTypesメソッドではアセンブリの外部から参照できる型のみが返されます。 そのためGetExportedTypesメソッドでは、パブリックではない型(アクセス修飾子internal
/Friend
が指定されているクラスなど)は取得できません。
アセンブリ内のすべての型情報を取得する
Imports System
Imports System.Reflection
Public Class T1 : End Class ' アセンブリ外に公開されるクラス(Public)
Friend Class T2 : End Class ' アセンブリ外に公開されないクラス(Friend)
Class Sample ' アセンブリ外に公開されないクラス(internal)
Shared Sub Main()
Dim a As [Assembly] = [Assembly].GetExecutingAssembly()
' GetTypesメソッドではすべての型が返される
Console.WriteLine("[GetTypes]")
For Each t As Type In a.GetTypes()
Console.WriteLine(t)
Next
' GetExportedTypesメソッドではPublicな型のみが返される
Console.WriteLine("[GetExportedTypes]")
For Each t As Type In a.GetExportedTypes()
Console.WriteLine(t)
Next
End Sub
End Class
実行結果
[GetTypes] T1 T2 Sample [GetExportedTypes] T1