reflection - 如何在 Dart 中动态使用 getter/setter

标签 reflection dart dart-mirrors

class User{
  String firstName;
  String lastName;
  String email;
}

我希望能够使用动态选择的符号或字符串获取和设置用户中的字段之一。例如String value = u[new Symbol("firstName")];

我看到InstanceMirror有一个getField方法,但它似乎没有返回值。我所需要的只是值(value)。

最佳答案

如果使用 # 创建符号,则需要在编译时知道该名称。 我是这样工作的:

library operator_lib;

import 'dart:mirrors';

void main(List<String> args) {
  var x = new X();
  var f = new Symbol('firstName');
  var r = reflect(x);
  print(r.getField(f).reflectee);
  r.setField(f, "John");
  print(r.getField(f).reflectee);

}

class X {
  String firstName = 'Mike';
}

关于reflection - 如何在 Dart 中动态使用 getter/setter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19623148/

相关文章:

c# - 如何使用反射调用扩展方法?

java - 根据另一个变量的内容设置变量

Dart:如何仅将特定类型变量的变量标识符名称转换为字符串

dart - 获取所有具有注释的类的 ClassMirror 实例

java - 是否可以使用Jackson从Pojo获取值(value)

flutter - flutter_bloc 库中的存储库提供程序在推送新路由时不提供存储库

flutter - 打开视频通话flutter

dart - Dart 反射(reflect)问题。 getField

dart - 如何使用 Dart 的 Mirrors API 获取对象的所有字段(包括其父类(super class))?

go - 如何获取函数参数的类型