ダーツでは、文字列からクラスをインスタンス化することは可能ですか?
例えば:
- javascript のバニラ:
var myObject = window[classNameString];
- 目的 C:
id myclass = [[NSClassFromString(@"MyClass") alloc] init];
ダーツでは、文字列からクラスをインスタンス化することは可能ですか?
例えば:
var myObject = window[classNameString];
id myclass = [[NSClassFromString(@"MyClass") alloc] init];
適切に機能させるには、ライブラリ名とクラス名を知る必要があります。両方を知っていると仮定すると、以下の例は をインスタンス化し、TestClass
それを呼び出しdoStuff
ます。
library test;
import "dart:mirrors";
class TestClass {
doStuff() => print("doStuff was called!");
}
main() {
MirrorSystem mirrors = currentMirrorSystem();
LibraryMirror lm = mirrors.libraries['test'];
ClassMirror cm = lm.classes['TestClass'];
Future tcFuture = cm.newInstance('', []);
tcFuture.then((InstanceMirror im) {
var tc = im.reflectee;
tc.doStuff();
});
}
このソリューションに関する注意事項:
試す:
Map models = {"Player": Player.instatiate};
var player = models["Player"]();
class Player{
static instatiate() => Player();
}