所以我有一个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);
}
答案 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)));
只要您不加载任何新程序集,此列表就不会更改。因此,不需要再次检查。