VB.netで継承先のクラス列挙

継承元のクラスやインターフェースを使用して、継承先のクラスを列挙する方法。

' IProgramsインターフェースを実装しているクラスを列挙
Dim types As IEnumerable(Of Type) =
    Reflection.Assembly.GetEntryAssembly().GetTypes().
        Where(Function(t) t.IsClass).
        Where(Function(ct) ct.GetInterfaces.Any(Function(it) GetType(IPrograms).FullName.Equals(it.FullName)))
' 列挙したクラスをインスタンス化しインターフェースに定義してあるProgramNameプロパティをキーにDictionaryに格納
Dim dicPrograms As New Dictionary(Of String, IPrograms)
For Each type As Type In types
    Dim clsProgram As IPrograms = CType(Activator.CreateInstance(type), IPrograms)
    dicPrograms.Add(clsProgram.ProgramName, clsProgram)
Next
' BaseClassを親に持つクラスを列挙
Dim assm As Assembly = Assembly.GetExecutingAssembly()
Dim types = assm.GetTypes().
    Where(Function(t) t.IsClass).
    Where(Function(t) t.BaseType.IsClass AndAlso GetType(BaseClass).FullName.Equals(t.BaseType.FullName))

以上

VB.netで継承先のクラス列挙」への1件のフィードバック

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です