无法将透明代理强制转换为类型"在使用AppDomain时.CreateInstanceAndUnwrap方法

本文关键字:quot AppDomain 方法 CreateInstanceAndUnwrap 类型 透明 代理 转换 | 更新日期: 2023-09-27 18:11:22

当试图在分离的应用程序域中获得类的实例时,我得到了这个错误。下面是代码:

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)中。

有谁知道这个异常的原因吗?谢谢你的回复。

无法将透明代理强制转换为类型"在使用AppDomain时.CreateInstanceAndUnwrap方法

您的应用程序如何引用com dll?这也是一个。net dll吗?如果它被你的应用程序引用为一个项目,也被注册为一个com dll,那么有一个机会,你的应用程序是引用dll的两个不同的副本,在这种情况下,它会考虑你的核心类是两个独立的类,因为它们在不同的dll。您可以考虑连接appdomains AssemblyLoad事件来调试它,并检查正在加载的程序集的位置。