2013-04-19 3 views

답변

9

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에서 지원할 계획입니다.

+0

위와 확장 방법이 더 좋을 것입니다. 예 : String qualifiedName = reflectClass (type) .qualifiedName.getName()'- [Gilad에게 알려주세요!] (https://code.google. com/p/dart/issues/detail? id = 13) :) – mythz

+0

'reflectClass (Awesome)'과 같은 유형을 직접 사용하는 상태는 어떻습니까? –

+0

@KaiSellgren : reflectClass의 구현은 obj.runtimeType을 통해 Type 객체를 얻었는지 또는 유형 리터럴을 사용하는지 상관하지 않습니다. 달리 말하면, reflectClass (Awesome)의 상태는 reflectClass (new Awesome()). runtimeType)의 상태와 동일해야합니다. 이것이 사실이 아닌 경우에는 http://dartbug.com에 버그를 제출하십시오. –