Je suis nouveau à Castle Windsor et j'utilise la dernière version. J'ai créé des entrées pour mes dépôts qui fonctionnent bien mais j'ai une dépendance finale que je transmets à mon contrôleur.IOC sur IValidationDictionary avec Castle Windsor
J'ai créé un ModelStateWrapper qui hérite de IValidationDictionary. Le ModelStateWrapper prend ModelStateDictionary dans son constructeur de sorte que dans mon code je peux passer ce qui suit comme un exemple:
IMembershipService _memSvc;
IValidationDictionary _validationService;
public AccountController()
{
_validationService = new ModelStateWrapper(this.ModelState);
_memSvc = new MembershipService(_validationService);
}
Dans mes tests, je peux alors le faire en utilisant Moq:
var v = new Mock<ModelStateDictionary>();
_validationService = new ModelStateWrapper(v.Object);
_service = new MembershipService(_validationService);
je peux » Il semble que Castle puisse injecter ModelState avec ModelStateWrapper. Je n'ai aucune idée par où commencer et il semble que je ne peux pas simplement «l'ignorer» et essayer d'injecter manuellement pendant que Castle est à la recherche de dépendances et me lancer une erreur disant qu'il reste une dépendance. Comment puis-je configurer Castle Windsor pour utiliser le ModelStateWrapper basé sur IValidationDictionary et également inclure ModelState comme paramètre de constructeur?
Lloyd
Alors serait mon regard du contrôleur de compte comme : IMembershipService _memSvc; IValidationDictionary _validationService; Public account controller (IValidationDictionaryFactory validationDFactory) } Si oui, comment l'exécuterais-je dans un test avec un modelstate mocké? Désolé, si ce sont des questions stupides, j'ai seulement un jour sur Dependency Injection. – lloydphillips
L'approche la plus simple pour DI consiste à utiliser l'option Constructor Injection chaque fois que vous le pouvez, donc injectez toutes les dépendances via le constructeur. Cela vous permettra également de les remplacer par des tests doubles si nécessaire. Abstract Factory est une solution lorsque vous n'avez pas la dépendance au moment du branchement. Il peut y avoir plusieurs raisons à cela. –