从派生自基类的程序集中获取所有类型

cap*_*aig 7 c# reflection

我试图检查程序集的内容,并找到其中直接或间接派生自Windows.Forms.UserControl的所有类.

我这样做:

Assembly dll = Assembly.LoadFrom(filename);
var types = dll.GetTypes().Where(x => x.BaseType == typeof(UserControl));
Run Code Online (Sandbox Code Playgroud)

但是它给出了一个空列表,因为没有类直接扩展UserControl.我不太了解反射快速完成它,如果我不需要,我宁愿不写一个递归函数.

Fre*_*örk 19

您应该使用Type.IsSubclassOf此代替:

var types = dll.GetTypes().Where(x => x.IsSubclassOf(typeof(UserControl)));
Run Code Online (Sandbox Code Playgroud)