【发布时间】:2010-11-23 02:08:00
【问题描述】:
问题源于两个事实: 1)通过反射可以调用私有方法。 2) TypeBuilder 无法从另一个程序集构建新类型“继承”的内部类型。
我可以使用 ECMA-335 解释 TypeBuilder 的行为 - 如果类型未“标记为导出”,则它是不可见的,继承需要可见性。
但我无法解释为什么反射有效?
ECMA 规范在运行时使用反射使元数据访问合法化,并且提到了一个应用程序 - 序列化,这意味着访问状态,访问字段。还有一句话“元数据描述如何解析调用”,但我在文本中找不到可以忽略方法的可访问性来解决调用的情况。可能我错过了什么。有人可以向我解释一下 ECMA 作者是如何为私有方法调用敞开大门的(至少对于反射来说,顺便说一句,“如果特别指定,成员可访问性可以忽略”-但我在文本,再次)?
【问题讨论】:
-
我知道 stackoverflow.com/questions/2084353/… ,我认为我的问题不同。
标签: .net reflection