【发布时间】:2013-04-13 03:56:12
【问题描述】:
我有一个Type 的实例,但我想要它的完全限定名称。我怎样才能做到这一点?我知道我必须使用 Mirrors(Dart 的反射库)。
【问题讨论】:
标签: dart dart-mirrors
我有一个Type 的实例,但我想要它的完全限定名称。我怎样才能做到这一点?我知道我必须使用 Mirrors(Dart 的反射库)。
【问题讨论】:
标签: dart dart-mirrors
使用来自dart:mirrors 的新reflectClass 顶级函数。
这是一个例子:
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
请注意,这适用于 build 21753 或更高版本。此外,这 当前 在 dart2js 中还不起作用。我们计划在 dart2js 中支持它。
【讨论】:
String qualifiedName = reflectClass(type).qualifiedName.getName() - let Gilad know! :)
reflectClass(Awesome)这样直接使用类型是什么状态?