こんにちは私はWPFMVVMアプリケーションでUnityコンテナーを使用しようとしています。重いように見えるので、私はプリズムを使用していません。アプリケーションの構造は次のとおりです。ビューをViewModelsに解決する方法と、ビューモデル(サービス)の依存関係を理解しようとしています。
応用:
ビュー
MainWindow.xaml
CustomerList.xaml
CustomerDetail.xaml
BookList.xaml
BookDetail.xaml
ViewModels
MainViewModel
CustomerListViewModel
BoolListViewModel
BookDetailViewModel
CustomerDetailViewModel
としょうかん
ICustomerService (AddCustomer, SaveCustomer, GetCustomers, GetCustomer)
CustomerService:ICustomerService
IBookService (GetBooks, GetBook)
BookService:IBookService
IBookReserveService(Reserve, Return)
BookReserveService:IBookReserveService
MainViewModelには、ICustomerServiceおよびIBookServiceへの参照が必要です
CustomerListViewModelにはICustomerServiceへの参照が必要です
BoolListViewModelにはIBookServiceへの参照が必要です
BookDetailViewModelには、ICustomerServiceおよびIBookReserveServiceへの参照が必要です。
CustomerDetailViewModelには、ICustomerServiceおよびIBookReserveServiceへの参照が必要です
各ビューモデルのサービスにゲッターセッタープロパティがあります。
特にViewsとViewModelに対して、WPFで依存性注入をどのように使用するかについて問題が発生しています。Unityを使用して、正常に動作しているコンソールアプリケーションに登録して解決しようとしました。しかし、WPFアプリでこれをどのように行うことができるかについていくつかのアイデアが欲しいです。登録してみました
container.RegisterType<ICustomerService, CustomerService>()
container.RegisterType<IBookReserveService, BookReserveService>()
container.RegisterType<IBookService, BookService>()
そしてcontainer.Resolve();を使用してそれを解決します。
しかし、どのビューがどのビューモデルを使用する必要があるかを判断し、アプリの起動時ではなく、必要に応じてそれらを解決する方法がわかりませんでした。また、アプリの起動時にすべてのマッピングを解決するわけではありません。メニュー(詳細を表示する顧客の選択、詳細を表示する本の選択、顧客の保存、本の予約など)が選択されているときに実行する必要があります。
私が読んだもののほとんどは、IViewとIViewModelを使用したかったのです。しかし、その利点を理解したかどうかはわかりません。
どんな助けでも大歓迎です。