从另一个解决方案动态加载 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 完全相同。实际上,我将接口复制到了另一个解决方案。所以我知道强制转换应该工作,因为它是一个实现相同接口的对象。

问题是它抛出了无效的转换异常。

我的猜测是接口在另一个命名空间中拧紧了铸件。

CalculationExpertICalculationExpert在另一个解决方案中namespace Expert。 我的解决方案中的ICalculationExpert namespace GSoft.Sons.Bll.ScoreExpert

我可以阅读的任何想法或资源?

从另一个解决方案动态加载 dll

根据 OOP 原则,将接口复制到您的解决方案不会使其相同。如果您有权访问 dll(具有 ICalculationExpert 接口的命名空间专家),为什么不在解决方案中添加 dll 引用,通过该引用,您可以从命名空间专家实现相同的接口。