を見つけるために、.NETリフレクションを使用して、私は、アセンブリ内で定義された共通の先祖クラスを(持っているタイプを含むアセンブリを持っている。共通の祖先は、ほとんどの場合、ないクラスの直接の基本型である。共通の先祖クラス
私は、このアセンブリのすべての型から、この共通の祖先を持つものを除外できるようにする必要があります。さまざまな理由で、型をインスタンス化できません(一般的なコンストラクタ署名はありません) myAssembly.GetTypes()
で始まり、型自体のプロパティを調べてください。言い換えれば、クラスのインスタンスではなくクラスで作業する必要があります。
このコレクションの各タイプを調べて、共通の祖先から継承しているかどうかを調べるにはどうすればよいですか?
後で、心配する必要はありません。
Type[] interestingClasses = assy.GetTYypes().Where(t => t.IsSubclassOf(typeof(AncestorClass)));
を祖先型が定義されて、私が思うに、ので:トリックは、しかし、これは動作しません例えば
Type ancestor = assy.getType("myAncestorClassName", true, true);
Type[] interestingClasses = assy.GetTYypes().Where(t => t.IsSubclassOf(ancestor));
、アセンブリから祖先型のあるタイプのオブジェクトをインスタンス化することです他のアセンブリではなく、主アセンブリ内にある。
多くの場合、後で....これに答えてくれた皆様に感謝します。私は道に沿って何かに転用されましたが、私は今、きちんとした解決策を持っています(新しいことを学びました)。
あなたはタイプのツリーを直接タイプします。それ自体はタイプです。タイプはもう一度です...ルートには1つのノードしかありません - それはすべてのものから全てのオブジェクトが継承されます... – Yahia