2010-04-30 86 views

回答

23

不是直接的,但是您可以使用​​獲取當前加載的所有程序集,然後使用Assembly.GetTypes()獲取該程序集中的所有類型。然後使用Type.IsSubclassOf()來確定它是否是您之後類型的子類。

+0

謝謝。有用。 – Polaris 2010-04-30 08:16:32

+0

有沒有辦法只得到用戶程序集(而不是系統程序集)?如果有一個選項可以獲得這個程序集和所有引用(這個)程序集,這將是一個很好的解決方案。 – Shimmy 2012-01-13 08:15:20

+0

找到它:http://msdn.microsoft.com/en-us/library/system.reflection.assembly.getreferencedassemblies.aspx – Shimmy 2012-01-13 08:16:03

4

您可以選擇您要檢查,獲得與方法Assembly.GetTypes()並測試他們每個人的類型,大會如果是帶Type.IsSubclassOf()

看到Assembly members一個子類,Type members

19

你可以這樣做:

var subclassTypes = Assembly 
    .GetAssembly(typeof(BaseClass)) 
    .GetTypes() 
    .Where(t => t.IsSubclassOf(typeof(BaseClass))); 
3

試試這個代碼:

public static IEnumerable<Type> GetAllSubclassOf(Type parent) 
{ 
    foreach (var a in AppDomain.CurrentDomain.GetAssemblies()) 
     foreach (var t in a.GetTypes()) 
      if (t.IsSubclassOf(parent)) yield return t; 
}