在Dart中将类类型作为变量传递

rod*_*gob 9 dart dart-mirrors

可以在Dart中将类类型作为变量传递?

我想做的事情如下:

class Dodo
{
  void hello() {
    print("hello dodo");
  }
}

void main() {

var a = Dodo;
var b = new a();
b.hello();

}
Run Code Online (Sandbox Code Playgroud)

在python类似的代码将工作得很好.在Dart中,我new a()抱怨错误,这a不是一种类型.

可以使用类对象作为变量吗?如果没有,推荐的工作是什么?

Ala*_*ght 17

另一种方法是通过传递闭包而不是类.然后你可以避免使用镜子.例如

a = () => new Dodo();
...
var dodo = a();
Run Code Online (Sandbox Code Playgroud)

  • 请注意,这种解决方案虽然非常有用,但如果您要传递许多参数,则可能不太优雅。 (3认同)

Oza*_*zan 7

您可以使用镜像 API:

import 'dart:mirrors';

class Dodo {
  void hello() {
    print("hello dodo");
  }
}

void main() {
  var dodo = reflectClass(Dodo);

  var b = dodo.newInstance(new Symbol(''), []).reflectee;
  b.hello();
}
Run Code Online (Sandbox Code Playgroud)

也许可以写得更紧凑一些,尤其是new Symbol('') 表达。