使用AppDomain.CreateInstanceAndUnwrap方法时“无法将透明代理强制转换为”

时间:2011-10-17 12:06:27

标签: c# appdomain

我试图在分离的应用程序域中获取类的实例时遇到此错误。这是代码:

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

所有人都知道这个例外的原因是什么?感谢您的回复。

1 个答案:

答案 0 :(得分:0)

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