dart - DART 查找类中的所有字段
问题描述
有人可以提供一个示例如何获取课堂上的所有字段吗?
例如:
class A{
String aa;
String bb;
static String ss;
string simple(){
return 'simple';
}
getallMemberFields(){
// returun ["aa", "bb"]
}
}
解决方案
如果您询问反射,这里有一个示例,说明如何不仅获取变量和函数名称,还获取有关它们的一些额外信息
import 'dart:mirrors';
class A {
String aa;
String bb;
static String ss;
String simple() {
return 'simple';
}
getallMemberFields() {
// returun ["aa", "bb"]
}
}
void main() {
InstanceMirror instance_mirror = reflect(new A());
var class_mirror = instance_mirror.type;
for (var v in class_mirror.declarations.values) {
var name = MirrorSystem.getName(v.simpleName);
if (v is VariableMirror) {
print('Variable: $name');
print(
'Static: ${v.isStatic}, Private: ${v.isPrivate}, Final: ${v.isFinal}, Const: ${v.isConst}');
} else if (v is MethodMirror) {
print('Method: $name');
print(
'Static: ${v.isStatic}, Private: ${v.isPrivate}, Abstract: ${v.isAbstract}');
}
}
}
印刷:
Variable: aa
Static: false, Private: false, Final: false, Const: false
Variable: bb
Static: false, Private: false, Final: false, Const: false
Variable: ss
Static: true, Private: false, Final: false, Const: false
Method: simple
Static: false, Private: false, Abstract: false
Method: getallMemberFields
Static: false, Private: false, Abstract: false
Method: A
Static: false, Private: false, Abstract: false
推荐阅读
- html - 在 html 中覆盖正文样式
- angular - tinymce 角度模板替换变量 - 如何让变量重置并在每次负载时保持动态?
- php - 如何使可编辑输入框成为必填字段?
- java - 在理解递归顺序树遍历中缺少链接
- idris - 根据(进一步)证明证明类型相等
- java - 在Android中做片段的正确方法是什么?
- symfony - 尝试将记录器绑定到 Symfony 3.4 中的自动装配控制器构造函数时出现未使用的绑定错误
- pagespeed - 为什么 Google PageSpeed Insights 不一致
- c# - 如何复制和替换具有管理员权限的所有用户配置文件的文件
- html - 使用 base64 字符串的剃刀显示图像