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

时间:2014-04-15 20:57:55

标签: dart dart-mirrors

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

我正在尝试做以下事情:

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

void main() {

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

}
在python类似的代码中的

可以正常工作。在Dart中,我在new a()抱怨a不是类型时收到错误。

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

3 个答案:

答案 0 :(得分:8)

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

a = () => new Dodo();
...
var dodo = a();

答案 1 :(得分:3)

您可以使用镜像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();
}

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

答案 2 :(得分:-1)

你能做的是:

const dynamic a = Dodo; // or dynamic a = Dodo;
var b = new a();
b.hello();

这对我来说很好;享受!