就像在PHP中的Dynamic类方法调用中的问题一样,我想在Dart中执行此操作.
var = "name";
page.${var} = value;
page.save();
Run Code Online (Sandbox Code Playgroud)
那可能吗?
Kai*_*ren 10
使用Mirrors可以实现几件事.
以下是如何设置类的值以及如何动态调用方法的示例:
import 'dart:mirrors';
class Page {
var name;
method() {
print('called!');
}
}
void main() {
var page = new Page();
var im = reflect(page);
// Set values.
im.setField("name", "some value").then((temp) => print(page.name));
// Call methods.
im.invoke("method", []);
}
Run Code Online (Sandbox Code Playgroud)
如果你想知道,im是一个InstanceMirror,它基本上反映了page实例.
还有另一个问题:有没有办法动态调用方法或在Dart中的类中设置实例变量?
您可以使用Dart Mirror API来执行此类操作.镜像API现在还没有完全实现,但是它的工作方式如下:
import 'dart:mirrors';
class Page {
String name;
}
main() {
final page = new Page();
var value = "value";
InstanceMirror im = reflect(page);
im.setField("name", value).then((_){
print(page.name); // display "value"
});
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3047 次 |
| 最近记录: |