PHPでの動的クラスメソッド呼び出しの質問のように、これをDartで実行したいと思います。
var = "name";
page.${var} = value;
page.save();
それは可能ですか?
PHPでの動的クラスメソッド呼び出しの質問のように、これをDartで実行したいと思います。
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
DartMirrorAPIを使用してそのようなことを行うことができます。ミラー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"
});
}
Serializableを使用できます
例えば:
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']}");
}