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

Accessing Internal field of nested class from different 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 cannot find field c on type A"。不过,我可以通过调用 B.a.d 来访问 d。有没有什么方法可以不借助反射来获取 c,或者这仅仅是使用 AppDomains 的结果?

有趣的是,当我 运行 Mono 4.2.3 中的代码时,我没有发现异常。我只在 windows 遇到问题,可能是由于 CAS。

来自 MSDN:

Internal types or members are accessible only within files in the same assembly

由于远程处理涉及创建从您的客户端到包含远程对象的程序集的引用,内部成员将对您的客户端 class 库不可见。如果不求助于反射或动态与反射的组合,您将无法绕过访问内部成员。