sni*_*tko 4 dynamic-method dart dart-mirrors
我希望能够使用Dart类构造函数执行此类操作:
class Model {
// ... setting instance variables
Model(Map fields) {
fields.forEach((k,v) => this[k] = v);
}
}
Run Code Online (Sandbox Code Playgroud)
显然,这不起作用,因为this没有[]=方法.
有没有办法让它发挥作用,或者它根本不是做事的"飞镖方式"?如果不是,你能告诉我解决这个问题的正确方法吗?
你可以使用镜子:
InstanceMirror im = reflect(theClassInstance);
im.invoke('methodName', ['param 1', 2, 'foo']).then((InstanceMirror value) {
print(value.reflectee); // This is the return value of the method invocation.
});
Run Code Online (Sandbox Code Playgroud)
所以,在你的情况下,你可以这样做(因为你有安装者):
import 'dart:mirrors';
class Model {
Model(Map fields) {
InstanceMirror im = reflect(this);
fields.forEach((k, v) => im.setField(k, v)); // or just fields.forEach(im.setField);
}
}
Run Code Online (Sandbox Code Playgroud)
InstanceMirror可能会有用的文档.
| 归档时间: |
|
| 查看次数: |
787 次 |
| 最近记录: |