2012-03-12 24 views
9

Zorluk: (T gibi herhangi türünü kullanarak) şu sınıfının bir örneğini oluşturun:İmkansız özyineleli genel sınıf tanımı?

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

İstediğiniz herhangi bir teknik kullanabilir; "Yeni MyClass ...", yansıma, MSIL hacklemeyi kullanma, her neyse.

+1

Neyi başarmak istediğinizle ilgili bilgi vermek, insanların daha iyi alternatif yanıtlar vermesine yardımcı olabilir. –

+1

[Recursive genel türleri] 'nin olası kopyası (http://stackoverflow.com/questions/647533/recursive-generic-types) – Amber

+3

mümkün Ödev-soru? – Carsten

cevap

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

Mükemmel ........ –

+3

Ya da sadece 'yeni Bar()'. –

+0

Haha havalı! Aslında bunun mümkün olduğunu düşünmedim! Hehe. Ben düzeltilmeyi bekliyorum. Gerçekten çok iyi! :) –

İlgili konular