看下面的代码片段。
import "dart:mirrors";
class meta {
final String data;
const meta(this.data);
}
@meta("Tag")
doSomething() => print("You have to do something");
void main() {
doSomething();
}
我如何检索功能,即带有元数据标签的市场?在我的示例中,我想找出哪个方法标记有元标记。
你可以这样做:
void main() {
doSomething();
getMetaData();
}
void getMetaData() {
LibraryMirror currentLib = currentMirrorSystem().libraries.values.last;
currentLib.declarations.forEach((Symbol s, DeclarationMirror mirror) {
if(mirror.metadata.length > 0) {
print('Symbol $s has MetaData: "${mirror.metadata.first.reflectee.data}"');
}
});
}
这应该给你:
You have to do something
Symbol Symbol("doSomething") has MetaData: "Tag"
您还可以分析另一个项目中的文件,并在该文件上使用 dart:mirrors,而不是检查当前库。或许libraries.values.last
并不总是返回当前的库 - 所以你可能需要更改它。就我而言,它有效。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)