如何在Dart中从类型实例获取限定名?

如何在Dart中从类型实例获取限定名?,dart,dart-mirrors,Dart,Dart Mirrors,我有一个类型的实例,但我想要它的完全限定名。我该怎么做?我知道我必须使用镜像(Dart的反射库)。使用Dart:Mirrors中新的reflectClass顶级函数 下面是一个例子: 导入'dart:html'; 导入“dart:镜像”; 课堂真棒{ // ... } void main(){ var awesome=新awesome(); Type Type=awesome.runtimeType; ClassMirror mirror=反射等级(类型); Symbol=mirror.qual

我有一个
类型的实例
,但我想要它的完全限定名。我该怎么做?我知道我必须使用镜像(Dart的反射库)。

使用
Dart:Mirrors
中新的
reflectClass
顶级函数

下面是一个例子:

导入'dart:html';
导入“dart:镜像”;
课堂真棒{
// ...
}
void main(){
var awesome=新awesome();
Type Type=awesome.runtimeType;
ClassMirror mirror=反射等级(类型);
Symbol=mirror.qualifiedName;
字符串qualifiedName=MirrorSystem.getName(符号);
查询('#name')。text=qualifiedName;
}
qualifiedName
应该类似于:

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

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

很好,使用扩展方法会更好,也就是说,您可以有:
String qualifiedName=reflectClass(type).qualifiedName.getName()
-:)直接使用像
reflectClass(Awesome)这样的类型的状态是什么
?@kaiselgren:reflectClass的实现并不关心您是通过obj.runtimeType还是通过使用Type literal获得Type对象。换句话说,reflectClass(Awesome)的状态应该与reflectClass(new Awesome()).runtimeType)的状态相同。如果您遇到的情况并非如此,请在提交错误。