是否有可能找出源自1种类型的类型

时间:2019-04-04 12:47:43

标签: c# dynamic reflection polymorphism

所以我有一个Type类型,我需要找出,其中有一些从我的类型派生的类型,以及从我的类型派生的类型是什么,我不能只检查所有程序集。现在,我得到的类型是动态的,并且我得到了很多,所以我不能每次都像这样每次检查装配。我会使用它,但是在此之前,我需要先了解其他类型,或者是否不从我的类型派生其他类。类似的女演员,但他知道他有其他班级派生的类型。

List<Type> list = new List<Type>();
foreach (Type type in Assembly.GetAssembly(myType).GetTypes().Where(i => 
      i.IsClass && !i.IsAbstract && i.IsSubclassOf(myType)))
           {
               list.Add(type);
           }

1 个答案:

答案 0 :(得分:0)

所以我想,您有一个这种类型的对象。

Type type = object.GetType()

为您提供所需的类型。还有

var assembies = AppDomain.CurrentDomain.GetAssemblies();

您具有所有已加载的程序集。 现在,您可以使用

type 检索所有这些类型。

var derivedTypes = AppDomain.CurrentDomain.GetAssemblies().SelectMany(asm => asm.GetTypes().Where(t => t.IsSubclassOf(type)));

只要您不加载任何新程序集,此列表就不会更改。因此,不需要再次检查。