这个问题的范围很简单,可以归结为以下设置:
public class B : MarshalByRefObject {
public A a;
public class A : MarshalByRefObject {
internal int c;
public int d;
}
}
我在一个AppDomain中有一个B实例,在另一个appdomain中有一个对A的引用。但是,我无法通过调用Bac从B引用c。如果这样做,我将得到一个remotingexception“远程处理无法在类型A上找到字段c”。我可以通过致电Bad来访问d。是否有任何方法可以不依靠反射来获取c,或者这仅仅是使用AppDomains的结果?
有趣的是,当我在Mono 4.2.3中运行代码时,我没有例外。仅在Windows上出现问题,可能是由于CAS。
从MSDN:
内部类型或成员只能在同一程序集中的文件中访问
由于远程处理涉及创建从客户端到包含可远程对象的程序集的引用,因此客户端类库将看不到内部成员。如果不求助于反思或将动态与反思结合起来,就不会四处访问内部成员。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句