シンプルなバインド メカニズムによってモデルから値と値のリストを表示できるシンプルな MVC アーキテクチャを備えたアプリ (Web や .net ではなくデスクトップ) があります。
モデルは、ツリー構造のスカラーおよび配列ノードです。一部のノードは生の値であり、一部のオブジェクトはメンバー サブノードを持ちます。
ビュー レベル バインディングの構文は次のようになります。
app_root.some_node.prices[1] // single "price" object
app_root.some_node.prices // all "price" objects
ここで、何らかの変換プロセスを実行した後に、これらの値を提示する必要があります。
例のために:ライブ通貨換算。つまり、単なるフォーマットよりも複雑で、失敗するか、アプリケーションの状態にある程度依存する可能性があるものです。
MVC システムとバインディング構文を正常に保ちながら、この機能を追加するにはどうすればよいでしょうか?
私が考えることができる2つの即時のオプションは次のとおりです。
// Fake "arguments" to a generic app-level converter node?
//
// Very hack-ish looking and now the app has a new
// global "currency_converter" node.
//
app_root.currency_converter.euro.app_root.some_node.prices[1]
app_root.currency_converter.yen.app_root.some_node.prices[1]
// Ad-hoc extension to the "price" objects?
//
// Cleaner binding path, but now I need modify the "price" object for
// each new currency. This also seems wrong.
//
app_root.some_node.prices[1].asEuro
app_root.some_node.prices[1].asYen // etc.
// Adding a post-fix converter option?
//
// Still a cleaner binding path, but now there must exist some magic
// conversion system/registry that the "As" sub-node must know how to talk to.
//
app_root.some_node.prices[1].As.Euro
app_root.some_node.prices[1].As.Yen // etc.
より良い方法はありますか?