2012-03-12 21 views
9

チャレンジ: (Tとして任意の型を使用して)以下のクラスのインスタンスを作成してください:不可能な再帰的な汎用クラス定義ですか?

class Foo<T> 
    where T : Foo<T> 
{ 
} 

あなたが好きな任意の技術を使用することができます。プレーンな "新しいMyClass ..."、反射を使用して、MSILをハッキングします。

+1

達成したいことについての洞察を与えることで、より良い代替回答が得られる場合があります。 –

+1

[再帰的ジェネリック型]の複製が可能です(http://stackoverflow.com/questions/647533/recursive-generic-types) – Amber

+3

可能な宿題ですか? – Carsten

答えて

12
static class Program { 
    static void Main() { 
     Foo<Bar> foo = new Foo<Bar>(); 
    } 
} 
class Foo<T> where T : Foo<T> {} 
class Bar : Foo<Bar> {} 
+0

パーフェクト........ –

+3

または単に 'new Bar()'。 –

+0

ハハクール!私は実際にこれが可能だとは思わなかった! Hehe。私は訂正した。本当に素敵です! :) –

関連する問題