查找类不起作用

黎明守卫

我尝试让所有类都使用此方法实现接口:

private static IEnumerable<Type> GetDriverClasses()
{
    var type = typeof(IDeviceDriver);
    var types = AppDomain.CurrentDomain.GetAssemblies()
                .SelectMany(s => s.GetTypes())
                .Where(p => type.IsAssignableFrom(p) && p.IsClass && !p.IsAbstract);
    return types;
}

只要创建了类的实例,这就会起作用。否则它会失败。
如何在不必先创建实例的情况下获取类?

附加信息:

DllSetup:
Core.dll持有上述方法的类
Impl.dll引用 Core 并持有寻找
Test.dll引用的类并调用该方法

这似乎与如何加载程序集有关,因为在 Impl.dll 中创建一个虚拟类的实例也使另一个类可以找到。

布里杰伯

AppDomain.CurrentDomain.GetAssemblies()将仅包含已在 AppDomain 中加载的程序集 - 一旦使用了一种类型的程序集,就会加载程序集。您需要使用Assembly.LoadFrom(..).

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章