通过Dart lang中的元数据标记执行函数包

通过Dart lang中的元数据标记执行函数包,dart,dart-mirrors,Dart,Dart Mirrors,在此基础上,我想编写一个代码,运行相同元数据标记引用的函数 我将上一个线程的代码调整如下: getFunctionMirrorsByTag.dart libraryimpl; @镜像使用(元目标:标记) 导入“dart:镜像”; 类标签{ 最终符号名称; const标签(此名称); } 列表getClassMirrorsByTag(符号名称){ List res=新列表(); MirrorSystem ms=currentMirrorSystem(); ms.libraries.forEach(

在此基础上,我想编写一个代码,运行相同元数据标记引用的函数

我将上一个线程的代码调整如下:

getFunctionMirrorsByTag.dart

libraryimpl;
@镜像使用(元目标:标记)
导入“dart:镜像”;
类标签{
最终符号名称;
const标签(此名称);
}
列表getClassMirrorsByTag(符号名称){
List res=新列表();
MirrorSystem ms=currentMirrorSystem();
ms.libraries.forEach((u,lm){
lm.declarations.forEach((s,dm){
dm.metadata.forEach((im){
if((im.reflectee是标记)&&im.reflectee.name==name){
res.add(dm);//我想用执行返回函数的语句替换它
}
});
});
});
返回res;
}
main.dart:

librarymain;
导入“getFunctionMirrorsByTag.dart”;
导入“额外的省道”;
@标签(#foo)
printa()=>print('a');
@标签(#foo)
printb()=>print('b');
void main(){
打印(getClassMirrorsByTag(#foo));
}
使用上述方法,我得到的输出是:

[打印A上的MethodMirror,打印B上的MethodMirror]
@MirrorsUsed(元目标:标记)
导入“dart:镜像”;
类标签{
最终符号名称;
const标签(此名称);
}
列表getMirrorsByTag(符号名称){
List res=新列表();
MirrorSystem ms=currentMirrorSystem();
ms.libraries.forEach((u,lm){
lm.declarations.forEach((s,dm){
dm.metadata.forEach((im){
if((im.reflectee是标记)&&im.reflectee.name==name){
res.add(dm);
}
});
});
});
返回res;
}
@标签(#foo)
printa()=>print('a');
@标签(#foo)
printb()=>print('b');
void main(){
getMirrorsByTag(#foo).forEach((MethodMirror me){
LibraryMirror所有者=me.owner;
owner.invoke(me.simpleName,[]);
});
}