我已经加载了一个特定的 AppDomain,我想从中动态加载一些类型(小菜一碟,对吧?)。事情是 AppDomain 类的所有 CreateInstance 方法都将事情作为远程对象句柄返回。远程代理具有我想避免的限制,例如:必须具有可序列化的具体类,以及过度急切的垃圾收集,除非使用 LifeTimeService。
我的问题是如何在另一个应用程序域中加载类型而不将其包装在远程代理中?下面是我的代码片段。
AppDomainSetup ads = new AppDomainSetup();
ads.ApplicationBase = Path.GetDirectoryName(_bllAssemblyPath);
ads.PrivateBinPath = Path.GetDirectoryName(_bllAssemblyPath);
if (File.Exists(_bllAssemblyPath + ".config"))
ads.ConfigurationFile = _bllAssemblyPath + ".config";
_workerSpace= AppDomain.CreateDomain("worker", new System.Security.Policy.Evidence(AppDomain.CurrentDomain.Evidence), ads );
_bllQueue = _workerSpace.CreateInstanceFrom(_bllAssemblyPath, queueType) as IThumbCapQueue;