尝试获取单独的Application Domain中的类的实例时遇到此错误。这是代码:
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)中。
那么有人知道这个例外的原因是什么?感谢您的任何回复。
最佳答案
您的应用程序如何引用com dll?这也是.net dll吗?如果您的应用程序将其引用为项目,并且还注册为com dll,则您的应用程序可能会引用dll的两个不同副本,在这种情况下,它将把您的Core类视为两个单独的类,因为它们位于不同的dll中。您可以考虑挂接到appdomains AssemblyLoad事件以调试此事件并检查正在加载的程序集的位置。