gpt4 book ai didi

c# - 使用 AppDomain.CreateInstanceAndUnwrap 方法时为 "Unable to cast transparent proxy to type"

转载 作者:太空宇宙 更新时间:2023-11-03 16:40:16 25 4
gpt4 key购买 nike

尝试在分离的应用程序域中获取类的实例时出现此错误。这是代码:

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

那么有人知道这个异常的原因是什么吗?感谢您的任何回复。

最佳答案

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

关于c# - 使用 AppDomain.CreateInstanceAndUnwrap 方法时为 "Unable to cast transparent proxy to type",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7793486/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com