2016-06-09 67 views
1

這個問題是在範圍相當簡單,它歸結爲下列設置:訪問嵌套類的內部字段從不同的AppDomain

public class B : MarshalByRefObject { 
    public A a; 
    public class A : MarshalByRefObject { 
     internal int c; 
     public int d; 
    } 
} 

在那裏我有B的一個實例在一個應用程序域與所述的一參考在另一個應用程序域中。但是,我無法通過調用B.a.c來從B引用c;如果我這樣做,我會得到一個remotingexception「遠程處理無法找到類型A的字段c」。不過,我可以通過調用B.a.d來訪問d。有沒有辦法獲得C而不訴諸反思或這只是使用AppDomains的結果?

有趣的是,當我在Mono 4.2.3中運行代碼時,我沒有任何例外。只有在我有問題的窗口中,可能是由於CAS。

回答

1

從MSDN:

內部類型或成員訪問僅在以相同的組件文件

由於遠程處理包括創建從客戶端至組件包含可遠程處理對象的引用,內部成員將無法在您的客戶端類庫中看到。如果不採取反思或動態和反思相結合的方式,你不會去訪問內部成員。

+0

儘可能多地感謝。結束重構代碼,避免這種情況 –