3

我希望能够做这样的事情:

class MyClass() {...}

var class_name = "MyClass"; // user input here
new class_name();           // so here, class_name is supposed to be a class constant

有人可以提出一个简单的方法吗?

4

1 回答 1

3

一种方法是:

library my_library;

import 'dart:mirrors';

void main() {
  var userInput = 'MyClass';
  var symbol = new Symbol(userInput);
  var myClasses = currentMirrorSystem().findLibrary(#my_library).declarations.values.where((dm) => dm is ClassMirror);
  var cm = myClasses.firstWhere((cm) => cm.simpleName == symbol);
  var instance = cm.newInstance(const Symbol(''), []).reflectee;
}

class MyClass {}

如果你编译成 JS,你也应该考虑使用,@MirrorsUsed否则生成的 JS 的大小会非常大。

于 2013-11-16T20:23:11.117 回答