1

您好,我有这段代码可以从我的解决方案中的项目加载 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。在我的解决方案中ICalculationExpertnamespace ExpertICalculationExpertnamespace GSoft.Sons.Bll.ScoreExpert

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

4

1 回答 1

0

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

于 2012-04-25T13:49:19.033 回答