我的c#programm正在使用多个appdomains来加载/卸载程序集。 我在第二个appdomain中的程序集返回一个继承MarshalByRefObject的对象。
我现在的问题是Visual Studio告诉我它无法显示有关它的信息。
在此上下文中不支持获取透明代理的运行时类型。
当我在第二个应用程序域的类中时,我可以看到有关此对象的信息。
我现在的问题:是否有可能告诉Visual Studio在1. appdomain中显示有关此对象的信息?
修改
我找到了解决方案,但这只是一种解决方法。 我从/到json序列化和反序列化对象以获得干净的副本。
var info = Proxy.GetAssemblyInfo(assemblyPath, typeof(IMyAssembly));
#if DEBUG //just to have a debuggable object
var jsonSerializer = new JavaScriptSerializer();
var json = jsonSerializer.Serialize(info);
info = jsonSerializer.Deserialize<AppDomainAssemblyInfo>(json);
#endif
reutrn info;
但如果有更好的解决方案请告诉我:)
编辑2:
一些代码详细解释:
var secondAppDomain = CreateAppDomain();
AppDomainLoaderProxy proxy = appDomain.CreateInstanceAndUnwrap(typeof(AppDomainLoaderProxy).Assembly.FullName, typeof(AppDomainLoaderProxy).FullName) as AppDomainLoaderProxy;
var myReturnValue = proxy.getSomeInformation();
//myReturnValue is not debuggable. When I add this to watch-list, VS tells me:
//Obtaining the runtime type of a transparent proxy is not supported in this context.