1
你好我有這個代碼工作從我的解決方案中的項目加載dll。 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
任何想法或資源我可以讀?
或者在單獨的程序集中提供接口,並在兩個解決方案中引用dll並實現接口。 – 2012-04-25 13:52:11
這就是我通常所做的。不幸的是,我加載的DLL中的代碼是祕密的。我給他們的界面,他們實現它。然後我必須加載他們的dll與接口。我無法預先知道它們的接口或類是什麼名稱空間。我唯一知道的是它們的接口與我的接口相同。 – Xavier 2012-04-25 13:55:57
我希望這會給你一個解決方案http://stackoverflow.com/questions/3116694/invalidcastexception-of-a-activator-createinstance-object-during-an-installation – 2012-04-25 14:30:59