I have a instance of Type
, but I want its fully qualified name. How can I do this? I know I have to use Mirrors (Dart's reflection library).
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
回答1:
Use the new reflectClass
top-level function from dart:mirrors
.
Here's an example:
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;
}
The qualifiedName
should be something like:
http://127.0.0.1:3030/Users/sethladd/dart/type_name/web/type_name.dart.Awesome
Note, this works in build 21753 or higher. Also, this doesn't currently work in dart2js yet. We plan to support it in dart2js.