8
나는 Type
의 인스턴스를 가지고 있지만 그 정규화 된 이름을 원합니다. 어떻게해야합니까? 거울 (Dart 's reflection Library)을 사용해야한다는 것을 알고 있습니다.Dart의 Type 인스턴스에서 정규화 된 이름을 얻으려면 어떻게해야합니까?
나는 Type
의 인스턴스를 가지고 있지만 그 정규화 된 이름을 원합니다. 어떻게해야합니까? 거울 (Dart 's reflection Library)을 사용해야한다는 것을 알고 있습니다.Dart의 Type 인스턴스에서 정규화 된 이름을 얻으려면 어떻게해야합니까?
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
참고이 21,753 이상을 빌드에서 작동합니다. 또한, 이것은 현재이 dart2js에서 작동하지 않습니다. 우리는 dart2js에서 지원할 계획입니다.
위와 확장 방법이 더 좋을 것입니다. 예 : String qualifiedName = reflectClass (type) .qualifiedName.getName()'- [Gilad에게 알려주세요!] (https://code.google. com/p/dart/issues/detail? id = 13) :) – mythz
'reflectClass (Awesome)'과 같은 유형을 직접 사용하는 상태는 어떻습니까? –
@KaiSellgren : reflectClass의 구현은 obj.runtimeType을 통해 Type 객체를 얻었는지 또는 유형 리터럴을 사용하는지 상관하지 않습니다. 달리 말하면, reflectClass (Awesome)의 상태는 reflectClass (new Awesome()). runtimeType)의 상태와 동일해야합니다. 이것이 사실이 아닌 경우에는 http://dartbug.com에 버그를 제출하십시오. –