web-dev-qa-db-ja.com

C#:アセンブリ内のすべてのクラスを一覧表示する

アセンブリ内のすべてのクラスのリストを(プログラムで-C#)出力したいです。

これを行うためのヒントやサンプルコードはありますか?反射?

95
Alex

つかいます - Assembly.GetTypes 。例えば:

Assembly mscorlib = typeof(string).Assembly;
foreach (Type type in mscorlib.GetTypes())
{
    Console.WriteLine(type.FullName);
}
137
Jon Skeet

ジョンの例に加えたいだけです。独自のアセンブリへの参照を取得するには、次を使用できます。

_Assembly myAssembly = Assembly.GetExecutingAssembly();
_

_System.Reflection_名前空間。

参照していないアセンブリを調べたい場合は、次のいずれかを使用できます。

_Assembly assembly = Assembly.ReflectionOnlyLoad(fullAssemblyName);
Assembly assembly = Assembly.ReflectionOnlyLoadFrom(fileName);
_

見つかった型をインスタンス化する場合:

_Assembly assembly = Assembly.Load(fullAssemblyName);
Assembly assembly = Assembly.LoadFrom(fileName);
_

詳細については、 アセンブリクラスのドキュメント を参照してください。

Assemblyオブジェクトへの参照を取得したら、Jonが既に示したようにAssembly.GetTypes()を使用できます。

94
Thorarin