c# - 为什么使用 Activator.CreateInstance 创建的实例不解析引用?

标签 c# .net dependencies .net-assembly fusion

我有一个具有以下文件夹结构的应用程序:

Application\Modules\XXX

当然,XXX 内的任何程序集都会在 XXX 内找到其他程序集。

问题发生在一些使用反射实例化的实例上:

TProvider providerInstance = (TProvider)Activator.CreateInstance(providerType));

TProvider 有一个方法返回另一个程序集中定义的类(也存储在 XXX 中)。当调用必须加载引用的 providerInstance 的该方法时,我得到一个 FileNotFoundException,即使依赖项位于同一个 XXX 文件夹中,也找不到相关程序集。

查看融合日志,程序集加载程序仅检查应用程序文件夹,而不检查 XXX ...

知道为什么会发生这种情况以及如何解决它吗?

谢谢。

最佳答案

原因是您正在使用 LoadFile 加载程序集方法:

LoadFile does not load files into the LoadFrom context, and does not resolve dependencies using the load path, as the LoadFrom method does.

你应该使用 LoadFrom方法和从上下文加载,或者,如果可能的话,最好使用 Load并加载上下文。

关于c# - 为什么使用 Activator.CreateInstance 创建的实例不解析引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17743250/

相关文章:

c# - 如何使用 Aspose 加速工作簿创建?

c# - 如何在 dotnet core 3 中使用依赖项在启动时调用自定义服务?

c# - TimeZoneInfo - .net core 1.1 上的调整规则错误

android - Google Play 服务已过时。需要 10298000 但找到 10084470

c# - 在同一个 catch block 中捕获两个异常?

c# - 尽管设置了忽略操作,AutoMapper 仍抛出 Unmapped 属性异常

c# - 将 onmouseout 更改为另一个元素的颜色

c# - 如何处理层与层之间的输入和参数验证?

c++ - 如何将 'this' 作为参数传递给另一个没有循环依赖的类构造函数?

java - Maven Eclipse 插件错误?无法自动添加工作区依赖 JAR 到运行配置模块路径