2016-06-09 39 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

尽可能多地感谢。结束重构代码,避免这种情况 –