2016-04-06 7 views
0

Ich habe eine Klasse, die ich wollte die Eigenschaften von. Das Problem ist, dass ich versuche, es ähnlich wie eine Karte zu verwenden, anstatt Punkt-Operation.Erstellen eines Accessor [], um den Wert von öffentlichen Eigenschaften zurückzugeben?

Also, ich tun wollte:

UserGroup ug = new UserGroup(); 
ug["id"] 

Meine Klasse ich habe, ist:

class UserGroup extends JsProxy{ 
    int id; 
    bool inUse; 
    String description; 
} 

und ich wollte eine ähnliche Funktion wie diese umzusetzen:

operator [](String str){ 
    //return ____ ?? null; 
} 

aber Ich kann es nicht herausfinden.

+0

Es gibt verschiedene Möglichkeiten. Sie können reflection oder das reflectable-Paket verwenden, um eine Liste von Eigenschaften zu erhalten, um sie namentlich zu nennen, Sie können den 'operator [] {}' mit 'switch (str) {cale 'id': return id ...' fest codieren. Wo wollen Sie das verwenden - Client, Server, ...? –

+0

Während es in beiden verwendet wird, würde dies hauptsächlich für clientseitige Implementierungen verwendet werden. Ich kann nicht alle Requisiten in einer Karte haben, ich würde einfach auf die Karte zugreifen. Ich dachte, dass die Reflexion zu rechenintensiv wäre. – Fallenreaper

+0

Beispiel: Im Moment habe ich versucht, etwas Ähnliches wie eine Kartenversion von: brace accessing und keys getter zu machen. Das Problem ist jedoch, dass ich nicht weiß, wie man das mit den globalen Variablen einer Dart-Klasse macht. Ich hätte gerne eine Art von: diesem Accessoire oder etwas, aber leider nein. – Fallenreaper

Antwort

1

habe ich nur einen Schalter:

operator[](String key){ 
    switch(key){ 
    case "id": return id; 
    case "inUse": return inUse; 
    case "description": return description 
    } 
} 
Verwandte Themen