2016-04-06 4 views
0

私は、私がクラスのプロパティを取得したいと思っています。問題は、ドット操作ではなく、マップに似てアクセスしようとしていることです。publicプロパティの値を返すアクセサ[]を作成しますか?

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

と私はこれと同様の機能を実装したい:私は私のクラスである

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

だから、私はやってみたかった

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

をが、私はそれを理解するようだ。

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

は異なる方法があります。 –

+0

これは両方で使用されますが、これは主にクライアント側の実装に使用されます。私はマップ内のすべての小道具を持っていない、それだけでそれに応じて地図にアクセスするだろう。私は反射があまりにも計算上激しいと思っていました。 – Fallenreaper

+0

例:現時点では、私はマップバージョンのブレースアクセスとキーゲッターに似た何かをしようとしていました。問題は、私はDartクラスのグローバル変数でそれを行う方法を知らないということです。私はそこに何かのものがあることを愛していたと思う:この[キー]アクセサや何か、しかし、悲しいかな、いいえ。 – Fallenreaper

答えて

1

は、私はちょうどスイッチを使用しました。リフレクションまたは反映可能なパッケージを使用して名前で呼び出すプロパティのリストを取得することができます。 `switch(str){cale 'id':return id ...`を使用して `operator [] {}`をハードコーディングできます。あなたはどこでこれを使う予定ですか - クライアント、サーバー、...?
関連する問題