我有一个基本表单(BaseForm
),需要从项目中的所有表单继承。他们中的一些继承了它,有些则没有。如何获得当前不继承它的所有表单的列表,因为我们有很多表单,并且检查每个表单是否都继承了这个表单会很费时间?也许有些反思?
答案 0 :(得分:3)
使用支票Type.IsSubclassOf()。
Assembly assembly = Assembly.GetExecutingAssembly();
Type baseType = typeof(BaseForm);
foreach (Type type in assembly.GetTypes().Where(t => (t.FullName.Contains("Form") && (t != baseType))))
{
if (type.IsSubclassOf(typeof(BaseForm)))
Console.WriteLine("{0} is subclass of {1}", type, baseType);
}
答案 1 :(得分:3)
Type formType = typeof(Form);
foreach (Type type in Assembly.GetExecutingAssembly().GetTypes())
if (formType.IsAssignableFrom(type))
{
// print the list of forms
}