0

我有一个基本表单 ( BaseForm),需要从项目中的所有表单继承。他们中的一些人继承了它,其他人则没有。我怎样才能得到所有那些目前没有继承它的表单的列表,因为我们有很多表单并且会很费时间去检查它们中的每一个是否都继承了这个表单?也许有些反思?

4

2 回答 2

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);
}
于 2013-01-17T14:01:08.277 回答
3
Type formType = typeof(Form);

foreach (Type type in Assembly.GetExecutingAssembly().GetTypes())
   if (formType.IsAssignableFrom(type))
   {
      // print the list of forms
   }
于 2013-01-17T14:05:17.883 回答