2013-06-10 2 views

답변

2

Zdeslav Vojkovic의 대답은 약간 오래된 것입니다.

이것은겠습니까 출력

3월 2일 2014

import 'dart:mirrors'; 

class Test { 
    int a = 5; 

    static int s = 5; 

    final int _b = 6; 

    int get b => _b; 

    int get c => 0; 
} 

void main() { 

    Test t = new Test(); 
    InstanceMirror instance_mirror = reflect(t); 
    var class_mirror = instance_mirror.type; 

    for (var v in class_mirror.declarations.values) { 

     var name = MirrorSystem.getName(v.simpleName); 

     if (v is VariableMirror) { 
      print("Variable: $name => S: ${v.isStatic}, P: ${v.isPrivate}, F: ${v.isFinal}, C: ${v.isConst}"); 
     } else if (v is MethodMirror) { 
      print("Method: $name => S: ${v.isStatic}, P: ${v.isPrivate}, A: ${v.isAbstract}"); 
     } 

    } 
} 
의로, 다트 1.1.3를 위해, 나를 위해 작동 :

Variable: a => S: false, P: false, F: false, C: false 
Variable: s => S: true, P: false, F: false, C: false 
Variable: _b => S: false, P: true, F: true, C: false 
Method: b => S: false, P: false, A: false 
Method: c => S: false, P: false, A: false 
Method: Test => S: false, P: false, A: false 
3

아니, 당신은 ClassMirror.variables을 통과해야합니다

class Test { 
    int a = 5; 
    static int s = 5; 
    final int _b = 6; 

    int get b => _b; 
    int get c => 0; 
} 

void main() { 
    Test t = new Test(); 
    InstanceMirror instance_mirror = reflect(t); 
    var class_mirror = instance_mirror.type; 
    for(var v in class_mirror.variables.values) 
    { 
    var name = MirrorSystem.getName(v.simpleName); 
    print("$name => S: ${v.isStatic}, P: ${v.isPrivate}, F: ${v.isFinal}"); 
    } 
} 

이 출력됩니다 :

_b => S: false, P: true, F: true 
a => S: false, P: false, F: false 
s => S: true, P: false, F: false 

ClassMirror.getters

bc을 반환합니다.

+0

헥타르 아, 감사합니다! 'variables '라는 단어는 정말로 오해의 소지가 있습니다.'fields'라고 부르기를 바랍니다. –

+0

동의 : API 문서를 두 번 살펴 봤는데'variables' 두 번 누락되었습니다 :) 그런 다음'DeclarationMirror'의'VariableMirror' 하위 클래스를 발견했습니다. 그러나 변수가 더 의미있는'LibraryMirror'도 있습니다. IMO - 일관성 (또는 '일관성', 결정할 수 없음)을 위해 수행 된 것 같습니다. –

+0

유효합니까? ClassMirror.variables는 문서 – corgrath

관련 문제