【发布时间】:2011-02-23 18:05:39
【问题描述】:
有没有办法确定TransparentProxy 是否指向有效引用?
我有IPlugin。我创建了一个新的 AppDomain,使用 IPlugin 的实现加载程序集,并创建该实现的实例。我收到了IPlugin,但在其背后是TransparentProxy。如果我卸载辅助 AppDomain,IPlugin 的实例(代理指向的那个)就消失了。但是代理仍然指向那里。当我尝试访问代理时,我的程序崩溃(无一例外)。
伪代码:
var domain = CreateDomain("domain");
var assembly = domain.LoadAssembly("myAssembly");
var plugin = domain.CreateObject("MyPlugin") as IPlugin;
// plugin is really a TransparentProxy to a MyPlugin
if (plugin != null)
plugin.DoSomething("123");
UnloadDomain(domain);
if (plugin != null) // Still evaluates to TRUE!
plugin.DoSomething("123"); // Program crashes with no exceptions
【问题讨论】:
-
你应该得到一个 RemotingException,而不是崩溃。不过,我也想知道这个问题的答案。