我有一个从不同的 dll 文件加载外部程序集的应用程序。我正在将程序集加载到之前创建的另一个域。所有程序集都返回 XElement 对象,我需要将此对象用于主 AppDomain 中的其他方法,但 XElement 对象没有 Serializable 属性,这就是我无法按原样发送此对象的原因。从外部库中获取 XElement 对象非常重要。我尝试为此使用序列化,但每次我都失败了。
我尝试创建一些包装类。此类仅从 XElement 创建流,我尝试在主域中从该流中读取,但当时该流已关闭。
如果有人能帮我解决这个问题,我会很高兴。先谢谢了。
private XElement CallModule(string modulePath, string moduleName,
Dictionary<string, string> parameters)
{
AppDomainSetup moduleDomainSetup = new AppDomainSetup();
moduleDomainSetup.ApplicationBase = AppDomain.CurrentDomain.RelativeSearchPath;
AppDomain moduleDomain =
AppDomain.CreateDomain("moduleDomain", null, moduleDomainSetup);
try
{
Module remoteobj = (Module)moduleDomain.CreateInstanceFromAndUnwrap(
HttpContext.Current.Request.MapPath(modulePath),
moduleName + "." + moduleName);
Module.WrappedStream remoteResult =
remoteobj.Execute(queryString["command"], parameters);
XElement res = XElement.Load(remoteResult.Stream);
return res;
}
catch (Exception ex)
{
throw ex;
}
finally
{
AppDomain.Unload(moduleDomain);
}
}