2010-03-19 40 views
6

我想檢查程序集的內容並找到它中直接或間接從Windows.Forms.UserControl派生的所有類。獲取從基類派生的所有類型

我這樣做:

Assembly dll = Assembly.LoadFrom(filename); 
var types = dll.GetTypes().Where(x => x.BaseType == typeof(UserControl)); 

但它給一個空列表,因爲沒有課的直接擴展用戶控件。我不太瞭解反射速度,如果不需要,我寧願不寫遞歸函數。

回答

17

您應該使用Type.IsSubclassOf這個代替:

var types = dll.GetTypes().Where(x => x.IsSubclassOf(typeof(UserControl))); 
+0

,這是我需要的東西。謝謝。 – captncraig 2010-03-19 21:35:48

1

您可以使用:

var assembly = Assembly.Load(filename); 
    var types = assembly.GetTypes().Where((type) => typeof(UserControl).IsAssignableFrom(type)); 
相關問題