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

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

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

4

1 回答 1

2

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

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';
}
于 2013-12-03T13:13:21.347 回答