イントレ。
スマートなアプリケーションアーキテクチャの構築(1)
プロパティの代わりにフィールドを内包したクラスを用意して、
データの検証などのロジックをデータに持たせるとスマートという触れ込み。
この記事を見つけたのは数ヶ月前で、見つけたときは感心はしたものの使いどころがわからず、
頭の中に入れておくか…程度で済ませてしまった。
今は後悔している。
↑を基点にいろいろ弄ってMVVMに適用したのが↓。
[WPF][C#]データに知能を持たせる
readonlyフィールドで保持していたインスタンスを自動プロパティにすることでWPFとのバインディングに対応。
検証ロジックやModel←→ViewModel間のデータ変換をデリゲートで分離。
これだけでも十二分にViewModelの実装が楽になります。
コンストラクタで初期化する部分が多少複雑になるデメリットはありますが…。
しかし。
IEditableObjectを実装し、ViewModel基底クラスにプロパティ初期化ロジックを組み込むことで、
ViewModel単位でBeginEdit/EndEdit/CancelEditの透過的なサポートを実現しています。
要はMVVMの作り方+プロパティをちょっと弄るだけで、
検証ロジックとデータのロールバック動作がサポート出来るようになるということ。
正直、MVVM Tookitに取り込まれてもおかしくないぐらい凄いと思う。
そして、その可能性に気づけなかった自分の応用力のなさに愕然…。
もっと精進しなきゃ。
プロパティの代わりにフィールドを内包したクラスを用意して、
データの検証などのロジックをデータに持たせるとスマートという触れ込み。
この記事を見つけたのは数ヶ月前で、見つけたときは感心はしたものの使いどころがわからず、
頭の中に入れておくか…程度で済ませてしまった。
今は後悔している。
↑を基点にいろいろ弄ってMVVMに適用したのが↓。
[WPF][C#]データに知能を持たせる
readonlyフィールドで保持していたインスタンスを自動プロパティにすることでWPFとのバインディングに対応。
検証ロジックやModel←→ViewModel間のデータ変換をデリゲートで分離。
これだけでも十二分にViewModelの実装が楽になります。
コンストラクタで初期化する部分が多少複雑になるデメリットはありますが…。
しかし。
IEditableObjectを実装し、ViewModel基底クラスにプロパティ初期化ロジックを組み込むことで、
ViewModel単位でBeginEdit/EndEdit/CancelEditの透過的なサポートを実現しています。
要はMVVMの作り方+プロパティをちょっと弄るだけで、
検証ロジックとデータのロールバック動作がサポート出来るようになるということ。
正直、MVVM Tookitに取り込まれてもおかしくないぐらい凄いと思う。
そして、その可能性に気づけなかった自分の応用力のなさに愕然…。
もっと精進しなきゃ。
Loading...
Utilities
- タグ
- カレンダー
- 最近の更新
- Adsense