C# で任意の名前空間内の型を列挙したい
名前空間に存在する型を列挙したい場合、リフレクションを使えば実現できます。
アセンブリ内の型情報(Type
)を列挙して、型名や名前空間でフィルタするイメージです。
実装方法
Assembly.GetExecutingAssembly()
で実行中のアセンブリを取得Assembly.GetTypes()
でアセンブリ内の型情報(Type
)を列挙Type.Namespace
で型の名前空間や型名を取得
この手順で欲しい型を取得します。
- Assembly クラス (System.Reflection) | Microsoft Docs
- Type クラス (System) | Microsoft Docs
-
// 実行中のアセンブリの型情報のうち、 foreach (var type in Assembly.GetExecutingAssembly().GetTypes()) { Console.WriteLine($"FullName: {type.FullName}, Namespace: {type.Namespace}, Name: {type.Name}"); }
例えば SampleApp
プロジェクトの Program
クラスだと以下のような感じで出力されると思います。
FullName: SampleApp.Program, Namespace: SampleApp, Name: Program
もし任意の名前空間内の型を列挙したい場合、Namespace
プロパティで絞り込めばよいです。Type
クラスが IsClass
プロパティのような型なのかを示すプロパティを保持しているので、これを使ってクラスだけに絞り込んだりもできます。
以上。
コメントを書く