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

我希望能夠通過動態選擇的符號或字符串獲取和設置用戶字段之一。例如String value = u[new Symbol("firstName")];如何在飛鏢中動態使用獲取器/設置器

我看到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'; 
}