我遇到了一个小问题 - 我正在编写一个加载 DLL 的程序,每个 DLL 都包含一个类,该类继承自加载的 DLL 和正在加载的“主机”程序引用的库中存在的类动态链接库。这里的问题是,当我尝试加载并转换为超类时:
var assembly = Assembly.LoadFrom(dllPath);
var type = assembly.GetTypes().FirstOrDefault(x => x.IsSubclassOf(typeof (MySuperclass)));
...
尽管两者都引用了包含 MySuperclass 的类,但由于 dll 引用的是构建的类库(加载程序引用的类库文件中的一个单独文件),IsSubclassOf 永远不会返回 true,因为它认为这两个类在出现时是不同的来自两个不同的组件。
此外,如果您尝试将已加载类的已创建实例强制转换为超类类型,则无法执行此操作,因为它们不相同(不同的程序集)。
所以,我的问题是:你如何处理加载引用公共代码的程序集,以便 c# 识别你正在加载一个继承自公共超类的类?