2011-02-23 79 views
2

有没有办法确定TransparentProxy是否指向有效的引用?如何确定TransparentProxy是否指向有效实例

我有IPlugin。我创建了一个新的AppDomain,使用实现IPlugin加载程序集,并创建该实现的实例。我收到一个IPlugin,但在其覆盖下其TransparentProxy。如果我卸载辅AppDomain,IPlugin(代理指向的那个)的实例已经消失。但代理人仍然指向那里。当我尝试访问代理时,我的程序崩溃(无一例外)。

Psudeocode:

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 
+0

你应该得到一个RemotingException,而不是崩溃。不过,我想知道这个问题的答案。 – Qwertie 2012-01-08 19:23:51

回答

0

那么,既然没有人提出一个合适的回答,您可以试试这个:

public static bool IsValidReference(MarshalByRefObject obj) 
{ 
    try { 
     obj.Equals(null); 
     return true; 
    } catch (RemotingException e) { 
     return false; 
    } 
} 
+0

我没有收到任何例外。我的应用程序就死了。 – 2012-01-11 11:45:34

相关问题