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

时间:2013-10-27 20:29:21

标签: reflection dart dart-mirrors

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

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

我看到InstanceMirror有一个getField方法,但它似乎没有返回值。我只需要价值。

1 个答案:

答案 0 :(得分:0)

如果使用#创建符号,则需要在编译时知道名称。 我这样做了:

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';
}