9

我有一个 的实例Type,但我想要它的完全限定名称。我怎样才能做到这一点?我知道我必须使用 Mirrors(Dart 的反射库)。

4

1 回答 1

9

使用 中的新reflectClass顶级函数dart:mirrors

这是一个例子:

import 'dart:html';
import 'dart:mirrors';

class Awesome {
  // ...
}

void main() {
  var awesome = new Awesome();
  Type type = awesome.runtimeType;
  ClassMirror mirror = reflectClass(type);
  Symbol symbol = mirror.qualifiedName;
  String qualifiedName = MirrorSystem.getName(symbol);

  query('#name').text = qualifiedName;
}

qualifiedName应该是这样的:

http://127.0.0.1:3030/Users/sethladd/dart/type_name/web/type_name.dart.Awesome

请注意,这适用于内部版本 21753 或更高版本。此外,这目前还不能在 dart2js 中使用。我们计划在 dart2js 中支持它。

于 2013-04-19T17:09:09.280 回答