«Невозможно привести прозрачный прокси к типу» при использовании метода AppDomain.CreateInstanceAndUnwrap - PullRequest
2 голосов
/ 17 октября 2011

Я получаю эту ошибку при попытке получить экземпляр класса в отдельном домене приложения.Вот код:

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);

Оба класса (вызывающий и вызываемый) в одной сборке (COM dll).

Так кто-нибудь знает, в чем причина otэто исключение?Спасибо за любой ответ.

1 Ответ

0 голосов
/ 20 октября 2011

Как ваше приложение ссылается на com dll?Это тоже .net dll?Если ваше приложение ссылается на него как на проект, а также регистрирует как com dll, то есть вероятность, что ваше приложение ссылается на две разные копии dll, и в этом случае оно будет рассматривать ваши основные классы как два отдельныхклассы, как они находятся в разных библиотеках.Вы можете подключить событие AssemblyLoad приложения appdomains, чтобы отладить его и проверить местоположение загружаемой сборки.

...