gpt4 book ai didi

reflection - 如何找到相应的setter和getter?

转载 作者:行者123 更新时间:2023-12-03 02:53:55 26 4
gpt4 key购买 nike

使用dart:mirrors库,如何找到任何类镜像的所有对应的getter和setter。

class Person {
String _name;
Person(this._name);
String get name => _name;
set name (String value) {_name = value;}
}

在此示例中,我想找到“名称” setter 和 getter 方法来对它们进行分组,而无需任何有关类的先验知识。

有没有办法正确地做到这一点?还是我应该通过使用类镜像的instanceMembers来破解自己的方式,也许将setter符号转换为字符串或类似的东西?

最佳答案

您可以像这样列出 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来获取源代码。也许您可以在这里进行拆分。 :)

这有帮助吗?

问候,
罗伯特

关于reflection - 如何找到相应的setter和getter?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23919168/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com