获取不继承其他表单的表单列表

时间:2013-01-17 13:56:04

标签: c# winforms

我有一个基本表单(BaseForm),需要从项目中的所有表单继承。他们中的一些继承了它,有些则没有。如何获得当前不继承它的所有表单的列表,因为我们有很多表单,并且检查每个表单是否都继承了这个表单会很费时间?也许有些反思?

2 个答案:

答案 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
   }
相关问题