如何从Dart中的Type实例中获取限定名称?

Set*_*add 9 dart dart-mirrors

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

Set*_*add 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;
}
Run Code Online (Sandbox Code Playgroud)

qualifiedName应该是这样的:

http://127.0.0.1:3030/Users/sethladd/dart/type_name/web/type_name.dart.Awesome
Run Code Online (Sandbox Code Playgroud)

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