Je crée une application WPF en utilisant le modèle MVVM. À l'heure actuelle, mes viewmodels appellent la couche de service pour récupérer des modèles (ce qui n'est pas pertinent pour le viewmodel) et les convertir en viewmodels. J'utilise l'injection de constructeur pour transmettre le service requis au viewmodel.
Il est facilement testable et fonctionne bien pour les modèles de vue avec peu de dépendances, mais dès que j'essaie de créer des modèles de vue pour des modèles complexes, j'ai un constructeur avec beaucoup de services injectés (un pour récupérer chaque dépendance et une liste de toutes les valeurs disponibles pour se lier à un itemsSource par exemple). Je me demande comment gérer plusieurs services comme ça et avoir toujours un modèle de vue que je peux tester facilement.
Je pense à quelques solutions:
Création d'un singleton de services (IServices) contenant tous les services disponibles en tant qu'interfaces. Exemple: Services.Current.XXXService.Retrieve (), Services.Current.YYYService.Retrieve (). De cette façon, je n'ai pas un énorme constructeur avec une tonne de paramètres de services.
Création d'une façade pour les services utilisés par le viewModel et passage de cet objet dans le ctor de mon viewmodel. Mais alors, je vais devoir créer une façade pour chacun de mes modèles de vues complexes, et ça pourrait être un peu trop ...
Selon vous, quelle est la "bonne" façon de mettre en œuvre ce type d'architecture?
new
pour créer d'autres modèles de vue, mais pensez à quelque chose d'aussi simple qu'une application MDI où cliquer sur un bouton ou un menu "nouveau document" ajoutera un nouvel onglet ou ouvrira une nouvelle fenêtre. L'enveloppe / le conducteur doit être capable de créer de nouvelles instances de quelque chose , même s'il est caché derrière une ou quelques couches d'indirection.