2010-11-26 6 views
0

を共有しました。出来ますか?より具体的なタイプは、コンストラクタ

+0

より具体的にする必要があります。あなたが知らない別のアセンブリであなたのクラスを継承する型はどうですか?同じ継承レベルに複数の型がある場合はどうなりますか?どのくらい深く木に行きたいですか? – thecoop

+1

Yonは、ジェネリックではなく、最も特定の*タイプがほしいと思っています... – Lucero

答えて

2

まず、それはあなたが最も派生タイプ(または最も特定タイプ)ではなく、最も一般的なタイプ見つけたいようです - 、のどちらか(反対むしろ意味するだろうジェネリック医薬品が関与していること、または最も一般タイプが求められています)。

リフレクションを使用してこれを行うことは可能かもしれませんが、それはあなたのクラス設計が間違っているか、最適でないことを示している可能性があります。

最初にコンストラクタは仮想メソッドではないため、コンストラクタ(IIRC)の内部では、Meオブジェクトリファレンスはこのコンストラクタを含む型です。

あなたができることは、アセンブリのすべての型を反映し、Fooから派生したものをすべて見つけることです。これらの型の継承グラフを作成し、Foo(継承レベルの数)から派生する度合いを表す各数値を割り当てる必要があります。その後、Meオブジェクト参照を、識別したすべての型に対してチェックすることができます(Meがそれぞれにキャストできるかどうかを確認してください)。そのサブセットから、継承レベルが最大の1つの型を選択します。

私はこのことから、おそらく努力する価値はないと思っています。なぜあなたはこれを行う必要があるのか​​を再考することがより面白く、おそらくもっと役立つだろうし、可能であれば、それを回避する方法を見つけ出すこともあろう。

関連する問題