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

    class Foo1 : Foo { } 

    class Foo2 : Foo { } 

我怎麼能夠得到所有使用美孚作爲基類的類?在同一個程序集中,繼承的類不是必需的。如何獲取基類的所有繼承類?

+1

在設計或運行時?如果設計,那麼你可以參考這個問題的一些提示http://stackoverflow.com/questions/282377/visual-studio-how-do-i-show-all-classes-inherited-from-a-base-class – 2009-11-03 03:48:24

+0

在運行時,謝謝。 – Carlsberg 2009-11-03 03:50:27

回答

15

這並不快,但只要Foo是一個具體類型(不是接口),那麼它應該工作。本代碼不返回Foo

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

我不認爲有更快的方法來做到這一點。 – SLaks 2009-11-03 04:03:16