我正在为Flex/AS3开发一个动态模拟框架,并且在使用私有/支持类型(即在类文件中的包{}之外声明的那些)时遇到问题.
在我的ABC"文件"中,我使用PROTECTED_NAMESPACE类标志和PRIVATE_NS多个名称声明实例.我还尝试给它提供与子类化相同的命名空间(例如,PRIVATE_NS("ContainerClass.as $ 123")).
无论我做什么,我总是在loadBytes之后得到以下错误:
VerifyError:错误#1014:Class ContainerClass.as $ 123 ::找不到PrivateClass.
我已经尝试将生成的字节码加载到与私有类相同的ApplicationDomain中(我默认使用子域).我甚至尝试在加载之前注册一个类别名(虽然这有点拉伸).
我忘了什么,或者只是AVM的限制?
请注意,我完全清楚这在ActionScript 3.0中是非法的,我正在寻找这是否在AVM中实际可行.
编辑:对于那些对目前工作感兴趣的人来说,该项目是asmock并且在sourceforge上.
回头看看 ernest 中的这个问题,我可以明确地回答这个问题:私有类只能从加载它们的 LoaderContext 中引用
我已经能够通过在加载的 ABC “文件”中复制接口来添加对私有接口的支持,但它不能被强制/转换回原始私有接口。
这对于我的要求仍然有用,因为私有接口可用于组合多个接口。