我有一个MethodMirror
,想要检查它正在镜像的方法是否正在实现typedef
。这可能吗?如何?
答案 0 :(得分:1)
我在'dart:mirrors'中找不到预定义的方法来检查方法是否是typedef的实例。
这段代码似乎可行(未经过严格测试)
import 'dart:mirrors';
typedef MyFunc(int a, String b);
main() {
MethodMirror mm = reflectClass(TestClass).declarations[#testFunc1];
FunctionTypeMirror tdm =(reflectType(MyFunc) as TypedefMirror).referent;
print(isOfTypeDef(mm, tdm));
mm = reflectClass(TestClass).declarations[#testFunc2];
print(isOfTypeDef(mm, tdm));
mm = reflectClass(TestClass).declarations[#testFunc3];
print(isOfTypeDef(mm, tdm));
}
class TestClass {
void testFunc1(int c, String d) {
print('$c, $d');
}
void testFunc2(var c, var d) {
print('$c, $d');
}
void testFunc3(int e, int f) {
print('$e, $f');
}
}
bool isOfTypeDef(MethodMirror mm, FunctionTypeMirror tdm) {
if((mm.returnType.isAssignableTo(tdm.returnType)) && (mm.parameters.length == tdm.parameters.length)) {
for(int i = 0; i < mm.parameters.length; i++) {
if(!mm.parameters[i].type.isAssignableTo(tdm.parameters[i].type)) {
return false;
}
};
}
return true;
}
我认为这值得http://dartbug.com
的功能请求