2011-02-23 33 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

相關問題