나는 dart : mirrors 라이브러리를보고, ClassMirror을 발견했다. 내가 getField
을 보았을 때 에 대한 액세스를 볼 수 없었습니다. 모두 필드. 그래도 getters
을 보았습니다.Dart에서 클래스의 모든 필드를 얻으려면 어떻게해야합니까?
클래스의 모든 입력란을 가져 오려면 getters
을 통과해야합니까?
나는 dart : mirrors 라이브러리를보고, ClassMirror을 발견했다. 내가 getField
을 보았을 때 에 대한 액세스를 볼 수 없었습니다. 모두 필드. 그래도 getters
을 보았습니다.Dart에서 클래스의 모든 필드를 얻으려면 어떻게해야합니까?
클래스의 모든 입력란을 가져 오려면 getters
을 통과해야합니까?
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
아니, 당신은 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
b
및
c
을 반환합니다.
헥타르 아, 감사합니다! 'variables '라는 단어는 정말로 오해의 소지가 있습니다.'fields'라고 부르기를 바랍니다. –
동의 : API 문서를 두 번 살펴 봤는데'variables' 두 번 누락되었습니다 :) 그런 다음'DeclarationMirror'의'VariableMirror' 하위 클래스를 발견했습니다. 그러나 변수가 더 의미있는'LibraryMirror'도 있습니다. IMO - 일관성 (또는 '일관성', 결정할 수 없음)을 위해 수행 된 것 같습니다. –
유효합니까? ClassMirror.variables는 문서 – corgrath