しゅみぷろ

プログラミングとか

全ての派生クラスの型情報を取得する

あるクラスの派生クラスの型情報をすべて取得したいケースがあったのでメモ。 あるクラスをTとして、以下のようにすれば取得できます。

skillTypes=Assembly
    .GetAssembly(typeof(T))
        .GetTypes()
        .Where(t=>{
            return t.IsSubclassOf(typeof(T)) && !t.IsAbstract;
        })

抽象クラスは取得しないようにしています。

ちなみにどういった場面で使っているのかというと、Unityでデバッグ用の拡張ウィンドウを作るときとかに使ってます。 隠蔽しているデータをゲーム実行中にエディタから無理矢理書き換えて動作をチェックしたりするとすごく便利です。