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。実際、私はインターフェースを他のソリューションにコピーしました。つまり、キャストは同じインターフェイスを実装するオブジェクトであるため、機能するはずです。

問題は、無効なキャスト例外をスローすることです。

私の推測では、インターフェイスは別の名前空間にあり、キャストをねじ込みます。

CalculationExpertICalculationExpertnamespace Expert別のソリューションにあります。ICalculationExpert私のソリューションではnamespace GSoft.Sons.Bll.ScoreExpert

私が読むことができるアイデアやリソースはありますか?

4

1 に答える 1

0

OOPの原則により、インターフェイスをソリューションにコピーしても、同じになることはありません。dll(ICalculationExpertインターフェイスを備えた名前空間Expert)にアクセスできる場合は、名前空間Expertから同じインターフェイスを実装できるdll参照をソリューションに追加してみませんか。

于 2012-04-25T13:49:19.033 に答える