【发布时间】:2021-05-20 21:34:12
【问题描述】:
我正在努力解决如何在 dart 中调用顶级函数。我希望能够用@Route 注释一个函数,找到所有Route 注释,然后检查该注释是否在一个方法上,然后通过其符号调用该方法。
到目前为止我所拥有的是:
class Route {
final String url;
const Route(this.url);
}
@Route('/')
void handle() {
print('Request received');
}
void main() {
var mirrorSystem = currentMirrorSystem();
var lm = mirrorSystem.isolate.rootLibrary;
for (var mirror in lm.declarations.values) {
var metadata = mirror.metadata;
for (var im in metadata) {
if (im.reflectee is Route) {
print('Route found');
// how to invoke the function handle associated with the route annotation?
}
}
}
}
从这一点开始,我不确定我将如何调用该方法。如果它是一个类,那么我可以使用invoke 并将Symbol 传递给该方法,但这不起作用,因为它不是一个类。
谁能给我一些线索?不幸的是,关于 dart 中的 mirrors 库的信息相当稀少。
【问题讨论】:
标签: dart dart-mirrors