从另一个解决方案动态加载 dll
本文关键字:加载 dll 动态 解决方案 另一个 | 更新日期: 2023-09-27 18:32:16
您好,我有这段代码,可以从我的解决方案中的项目加载 dll。Dll 现在处于另一个解决方案中。
public void LoadCalculationExpert(string pathToExpert)
{
var assembly = Assembly.LoadFrom(pathToExpert);
var type = assembly.GetType("Expert.CalculationExpert");
var calculationExpert = (ICalculationExpert)Activator.CreateInstance(type);
this._container.RegisterInstance(calculationExpert, new ContainerControlledLifetimeManager());
}
Dll 实现的接口与 ICalculationExpert
完全相同。实际上,我将接口复制到了另一个解决方案。所以我知道强制转换应该工作,因为它是一个实现相同接口的对象。
问题是它抛出了无效的转换异常。
我的猜测是接口在另一个命名空间中拧紧了铸件。
CalculationExpert
和ICalculationExpert
在另一个解决方案中namespace Expert
。 我的解决方案中的ICalculationExpert
namespace GSoft.Sons.Bll.ScoreExpert
我可以阅读的任何想法或资源?
根据 OOP 原则,将接口复制到您的解决方案不会使其相同。如果您有权访问 dll(具有 ICalculationExpert 接口的命名空间专家),为什么不在解决方案中添加 dll 引用,通过该引用,您可以从命名空间专家实现相同的接口。