2013-10-27 1 views
1
class User{ 
    String firstName; 
    String lastName; 
    String email; 
} 

동적으로 선택된 기호 나 문자열을 사용하여 사용자 필드 중 하나를 가져 와서 설정하고 싶습니다. 예를 들어 String value = u[new Symbol("firstName")];다트에서 getter/setters를 동적으로 사용하는 방법

InstanceMirror에는 getField 메소드가 있지만 값을 반환하지 않는 것으로 보입니다. 필요한 것은 가치뿐입니다.

답변

0

#을 사용하여 심볼을 만들려면 컴파일 할 때 이름을 알아야합니다. 이렇게하면됩니다.

library operator_lib; 

import 'dart:mirrors'; 

void main(List<String> args) { 
    var x = new X(); 
    var f = new Symbol('firstName'); 
    var r = reflect(x); 
    print(r.getField(f).reflectee); 
    r.setField(f, "John"); 
    print(r.getField(f).reflectee); 

} 

class X { 
    String firstName = 'Mike'; 
}