在类似的问题动态类方法调用在PHP我想这样做的飞镖。
var = "name";
page.${var} = value;
page.save();
那可能吗?
在类似的问题动态类方法调用在PHP我想这样做的飞镖。
var = "name";
page.${var} = value;
page.save();
那可能吗?
有几件事情你可以实现镜像 。
下面是一个例子如何设置的类别值以及如何动态调用方法:
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", []);
}
如果你想知道, im
是一个InstanceMirror
,这基本上反映了page
实例。
还有另外一个问题: 有没有办法来动态调用方法或在达特类设置的实例变量?
您可以使用飞镖镜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"
});
}
您可以使用序列化
例如:
import 'package:serializable/serializable.dart';
@serializable
class Page extends _$PageSerializable {
String name;
}
main() {
final page = new Page();
var attribute = "name";
var value = "value";
page["name"] = value;
page[attribute] = value;
print("page.name: ${page['name']}");
}