Используйте новую функцию верхнего уровня 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.
Отлично, и с помощью методов расширения было бы еще лучше, т. Е. Вы могли бы: 'String qualifiedName = reflectClass (type) .qualifiedName.getName()' - [let Gilad know!] (Https://code.google. com/p/dart/issues/detail? id = 13) :) – mythz
Каков статус использования типа непосредственно как 'reflectClass (Awesome)'? –
@KaiSellgren: Реализация mirrorClass не имеет значения, получил ли вы объект Type через obj.runtimeType или с помощью литерала типа. Иначе говоря, статус reflectClass (Awesome) должен быть таким же, как и статус mirrorClass ((новый Awesome()). RuntimeType). Если вы испытываете это не так, напишите ошибку на http://dartbug.com. –