PRISMとEnterprise Libraryを使用して多くの CRUD 操作を行う LOB デスクトップ アプリケーションで作業しているときに、煩わしいパターンが繰り返し発生することに気付きました。すべてのドメイン モデル エンティティ (例: Contact) について、ビュー モデル (例: ContactVM) でそれをラップしているのを見つけてからContactsVM
、後者のクラスが入力に使用されるリポジトリ インターフェイスを受け入れる新しい (「s」に注意してください) を導入します。と、リポジトリから読み取っObservableCollection<ContactVM>
たすべてのContact
エンティティを にラップしContactVM
、ViewModel が必要とする他のエンタープライズ ライブラリ サービスと共にコンストラクターを介してエンティティを渡します。
問題は、すべてのビュー モデル コンストラクターがこのパターンを次のように取り始めたことです。
ViewModel(EntityToWrap e, DependencyFromEntLib, OtherDependencies ...)
ほとんどのツールとライブラリはデフォルトのパラメーターなしのコンストラクターを必要とするため (たとえば、一部の商用データ グリッドではフィルター処理のサポートを提供する必要があります)、さらにパラメーターなしのコンストラクターも必要であるため、設計データを使用してエンティティを視覚化できないため、これが問題になります。そして最後に質問: ビュー モデルを構築する正しい方法は何ですか? また、コンストラクターまたはServiceLocatorを介して Entlib サービスを提供する必要がありますか?