2009-11-03 23 views
11
class Foo { } 

    class Foo1 : Foo { } 

    class Foo2 : Foo { } 

Temel sınıfı olarak Foo kullanan tüm sınıfları nasıl alabilirim? Devralınan sınıflar aynı mecliste gerekli değildir.Temel sınıfın tüm miras sınıflarını nasıl alabilirim?

+1

Tasarım veya çalışma zamanında? Eğer tasarım varsa bu soruya bazı ipuçları için başvurabilirsiniz http://stackoverflow.com/questions/282377/visual-studio-how-do-i-show-all-classes-inherited-from-a-base-class –

+0

Çalışma zamanında, teşekkürler. – Carlsberg

cevap

15

Bu hızlı değil, ancak Foo bir beton türü (arabirim değil) olduğu sürece çalışmalıdır. Foo'un kendisi bu kod tarafından iade edilmez.

AppDomain.CurrentDomain.GetAssemblies() 
         .SelectMany(assembly => assembly.GetTypes()) 
         .Where(type => type.IsSubclassOf(typeof(Foo))); 
+1

Bunu yapmanın daha hızlı bir yolu olduğunu sanmıyorum. – SLaks

İlgili konular