从不同的AppDomain访问嵌套类的内部字段

时间:2016-06-09 16:49:33

标签: c# .net appdomain

这个问题在范围上相当简单,归结为以下设置:

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

我在一个AppDomain中有一个B实例,在另一个appdomain中引用了A。但是,我无法通过调用B.a.c来引用B中的c;如果我这样做,我得到一个远程感知“Remoting无法在A类上找到字段c”。不过我可以通过调用B.a.d来访问d。有没有办法获得c而不诉诸于反思,或者这只是使用AppDomains的结果?

有趣的是,当我在Mono 4.2.3中运行代码时,我没有例外。只有在窗口上我才有问题,可能是由于CAS。

1 个答案:

答案 0 :(得分:1)

来自MSDN:

  

内部类型或成员只能在同一程序集中的文件中访问

由于远程处理涉及从客户端创建对包含远程对象的程序集的引用,因此内部成员对您的客户端类库不可见。如果不采用反思或动态和反思的结合,你就不会绕过内部成员。