我想知道是否有可能通过名称(String)找出一个类(在同一个库中),以及是否可以从名称(String)创建一个类的实例。
在PHP中,您可以这样做:
$className = 'SomeClass';
if (class_exists($className))
$instance = new $className;
答案 0 :(得分:0)
在发布此答案时,解决方案并不像PHP那样简单,但可以通过这种方式进行管理:
String className = 'SomeClass';
if (currentMirrorSystem().isolate.rootLibrary.declarations.keys.join('').contains('Symbol("${className}")'))
var instance = currentMirrorSystem().isolate.rootLibrary.declarations[new Symbol(className)].newInstance(new Symbol(''), []).reflectee;
在字符串中搜索是一种顽皮的方法,但这是我能够让它独立工作的最简单方法。
接下来,您可以简单地调用实例的属性:
instance.method();
希望它有所帮助。
答案 1 :(得分:0)
我会更喜欢
import 'dart:mirrors';
class SomeClass {}
main() {
String className = 'SomeClass';
var instance;
ClassMirror cm = currentMirrorSystem().isolate.rootLibrary.declarations[
new Symbol(className)];
if (cm != null) {
instance = cm.newInstance(new Symbol(''), []).reflectee;
}
print(instance);
}