使用dart:mirrors库如何找到任何类镜像的所有相应的getter和setter。
class Person {
String _name;
Person(this._name);
String get name => _name;
set name (String value) {_name = value;}
}
在这个例子中,我想找到" name" setter和getter方法在没有关于类的任何先验知识的情况下对它们进行分组。
有没有办法正确地做到这一点?或者我应该通过使用类镜像的instanceMembers来破解我的方式,或许将setter符号转换为字符串或类似的东西?
答案 0 :(得分:3)
你可以列出这样的getter和setter:
import 'dart:mirrors';
class Person {
String _name;
Person(this._name);
String get name => _name;
set name (String value) {_name = value;}
void bar() {
}
}
void main() {
ClassMirror mirror = reflectClass(Person);
mirror.declarations.forEach((Symbol symbol, DeclarationMirror declaration) {
if(declaration is MethodMirror) {
if(declaration.isSetter) {
print('setter: ' + MirrorSystem.getName(declaration.simpleName));
}
if(declaration.isGetter) {
print('getter: ' + MirrorSystem.getName(declaration.simpleName));
}
}
});
}
输出:
getter: name
setter: name=
这就是你需要的吗?我认为你不能以不同的方式做到这一点。
我认为你不能直接得到变量(_name)。您可以使用declaration.source
获取源代码。也许你可以在这里做一些分裂。 :)
这有帮助吗?
此致 罗伯特