2011-10-17 99 views
2

在嘗試獲取獨立應用程序域中的類的實例時出現此錯誤。這裏是代碼:使用AppDomain.CreateInstanceAndUnwrap方法時出現「Unable to cast transparent proxy to type」

string assemblyName = Assembly.GetExecutingAssembly().FullName; 
string typeName = "Namespace.ClassName"; 

AppDomainSetup setup = new AppDomainSetup(); 
setup.ApplicationBase = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); 
SecurityZone zone = SecurityZone.MyComputer; 

// Set up the Evidence 
Evidence baseEvidence = AppDomain.CurrentDomain.Evidence; 
Evidence evidence = new Evidence(baseEvidence); 
evidence.AddAssembly(assemblyName); 
evidence.AddHost(new Zone(zone)); 

AppDomain app = AppDomain.CreateDomain("Processor AppDomain", evidence, setup); 
core = (Core)app.CreateInstanceAndUnwrap(assemblyName, typeName); 

兩個類(主叫和被叫)是在同一assemby(COM DLL)。

那麼有人知道這個例外是什麼原因嗎?感謝您的迴應。

+1

你確定`typeName`是指`Core`類型嗎?當您查看`CreateInstanceAndUnwrap()`的結果而不投射時,調試器顯示什麼? – svick 2011-10-17 19:13:50

+0

感謝您的回覆。 – Shelest 2011-10-18 07:43:53

回答

0

你的應用程序如何引用com DLL?這也是一個.net dll嗎?如果它被應用程序引用爲項目並且還註冊爲com,那麼您的應用程序有可能會引用dll的兩個不同副本,在這種情況下,它會將您的Core類別視爲兩個單獨的因爲它們在不同的dll中。您可以考慮連接appdomains的AssemblyLoad事件來調試,並檢查被加載的程序集的位置。

相關問題