在Dart中,是否有一种方式可以截取对编程结构的访问和修改?

5
例如,Java的Spring AOP框架提供了功能来提供拦截器以拦截某些过程,例如当执行方法时 - Spring AOP可以劫持执行方法,并在方法执行前或之后添加额外的功能。
我想知道Dart中是否有类似的东西。例如,您是否可以拦截对变量的访问和修改?我在Dart文档中没有找到类似的内容。
谢谢

我还没有看到Dart方面的任何类似内容。我可以想象,例如通过修改代码的转换器来完成这个任务。 - Günter Zöchbauer
@mezoni,Java本身并不具备这种能力。但是,https://www.eclipse.org/aspectj可以实现这一点,而且还有更多功能。您可以使用ajc替换javac,或者对编译后的.class文件进行后处理。 - Matthew Adams
@MatthewAdams 你写的是“native Java”?你能解释一下Java和“native Java”的区别吗?还有什么东西属于Java?如果我用“javac”代替“ajc”会发生什么? - mezoni
@mezoni 我的意思是普通的、原生的Java。由Oracle提供的JDK不包含任何AOP功能,这些功能都是AspectJ所提供的。 - Matthew Adams
@MatthewAdams 是啊... 纯Java,纯C#,纯Dart。下一个是谁?为什么要称它们为本地的、纯净的?你这样做有什么意义吗? - mezoni
显示剩余2条评论
1个回答

4
目前你无法在运行时做到这一点。一旦镜像构建器被引入,你或许可以尝试实现类似的功能。这段话来自于《使用镜像实现 Dart 反射》一文。

我们希望未来能支持更强大的反射特性,包括镜像构建器,旨在允许程序扩展和修改自身,以及基于镜像的调试 API。

但是你可以在构建时通过预处理器(例如build.dart)或pub 转换工具来实现这个功能。如果需要,你也可以使用分析器包获取 AST。这可以看作是 Java 中的 APT。

写作时,该链接显示404错误。您能否更新一下? - Ric Hard

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接