Dart-class存在于字符串中-class实例存在于字符串中
我想知道是否有可能通过名称(字符串)确定类(在同一个库中)是否存在,以及是否有可能通过名称(字符串)创建类的实例 在PHP中,您可以这样做:Dart-class存在于字符串中-class实例存在于字符串中,dart,dart-mirrors,Dart,Dart Mirrors,我想知道是否有可能通过名称(字符串)确定类(在同一个库中)是否存在,以及是否有可能通过名称(字符串)创建类的实例 在PHP中,您可以这样做: $className = 'SomeClass'; if (class_exists($className)) $instance = new $className; 在发布此答案时,解决方案不像PHP中那样简单,但可以通过以下方式进行管理: String className = 'SomeClass'; if (currentMirrorSys
$className = 'SomeClass';
if (class_exists($className))
$instance = new $className;
在发布此答案时,解决方案不像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();
希望它能帮助别人。我更愿意这样做
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);
}
我的代码检查器还不断警告我:“没有为类“DeclarationMirror”定义方法“newInstance”,但代码仍按预期工作。另请参阅