アセンブリ内のすべてのクラスのリストを(プログラムによって - C#)出力したいと思います。C#:アセンブリ内のすべてのクラスを一覧表示する
ヒントまたはサンプルコードはどのようにするのですか?反射?
アセンブリ内のすべてのクラスのリストを(プログラムによって - C#)出力したいと思います。C#:アセンブリ内のすべてのクラスを一覧表示する
ヒントまたはサンプルコードはどのようにするのですか?反射?
Assembly.GetTypes
を使用してください。例:
大きなアセンブリのための提案はありますか?このコードを13.8 MBのアセンブリに対して実行すると、VSインスタンスが無期限に何かのように感じるためにハングします。私は小さな9 KBアセンブリを試してみましたが、うまくいきました。私はあなたが何を考えているのか知っています - なぜあなたは13.8 MBのアセンブリを持っていますか?それはNetTeirsテンプレートを使って生成された私のデータ層の一部です。私たちは多くのテーブルを持っています。 – dyslexicanaboko
@dyslexicanaboko:あなたがたくさんのタイプを持っていれば、それをすべて列挙するのに時間がかかるでしょう。あなたのアセンブリにはいくつのタイプ*がありますか?そして、あなたは彼らと何をしていますか? (型の抽出に問題があるのか、後で何をしているのか確信していますか?) –
asm.GetTypes()呼び出しを逃すことはできません。ちょうどハングします。タイプがたくさんある - 私は何もできません。なぜなら、それらをすべて手に入れようとすることで掘り下げているからです。私のCPUは、私の4つのコアのうちの1つで30%にシュートします。私は実際には、 "ちょっと - この名前空間だけを見てください"という言い方があるのだろうかと思っています - GetTypes()メソッドには空のコンストラクタしかないので、それは不可能だと思っています。私は種類のオブジェクトブラウザを作成しようとしています。 – dyslexicanaboko
Jonの例に追加したいと思います。独自のアセンブリへの参照を取得するには、使用することができます。
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 class documentationをご覧ください。
Assembly
オブジェクトへの参照を取得したら、すでに実証済みのassembly.GetTypes()
を使用できます。
プロジェクトで参照されていないアセンブリを調べる場合は、私の更新された回答を参照してください。 – Thorarin