Użyj nowej funkcji najwyższego poziomu reflectClass
od dart:mirrors
.
Oto przykład:
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
powinno być coś takiego:
http://127.0.0.1:3030/Users/sethladd/dart/type_name/web/type_name.dart.Awesome
Uwaga, to działa w budowę 21753 lub wyższej. Co więcej, to jeszcze nie pracuje w dart2js w postaci obecnie. Planujemy go wspierać w dart2js.
Świetne i z metodami rozszerzenia byłoby jeszcze lepiej, tzn. Mógłbyś: 'String qualifiedName = reflectClass (type) .qualifiedName.getName()' - [niech Gilad wie!] (Https://code.google. com/p/dart/issues/detail? id = 13) :) – mythz
Jaki jest status korzystania z typu bezpośrednio jak 'reflectClass (Awesome)'? –
@KaiSellgren: Implementacja reflectClass nie obchodzi, czy otrzymałeś obiekt Type poprzez obiekt obj.runtimeType lub używając literału typu. Inaczej mówiąc, status reflectClass (Awesome) powinien być taki sam jak status reflectClass ((nowy Awesome()). RuntimeType). Jeśli tego nie zrobisz, zgłoś błąd na stronie http://dartbug.com. –