动态访问对象方法

时间:2014-05-02 20:44:28

标签: design-patterns dart getter dart-mirrors

person.name // => "Chad"
var attr = "name";
person.send(attr); // => Ruby style, throws error
person[attr]; // => ECMAScript style, throws error

如何在Dart中做到这一点?


此外,这个想法/模式叫什么?动态吸气?数据驱动的吸气剂?对象的变量消息/属性?

1 个答案:

答案 0 :(得分:1)

要在Dart中动态访问属性,您需要通过镜像系统。

import "dart:mirrors";

...
print(person.name);  // Chad
var name = reflect(person).getField(#name).reflectee;
print(name);  // Chad
var attr = "name";
name = reflect(person).getField(new Symbol(attr)).reflectee;
print(name);  // Chad

请参阅https://api.dartlang.org/apidocs/channels/stable/dartdoc-viewer/dart-mirrors.InstanceMirror#id_getField