J'ai une application Web ASP.NET MVC qui implémente un fournisseur d'appartenances personnalisé. Le fournisseur d'appartenance personnalisée prend un UserRepository
à son constructeur qui fournit une interface entre le fournisseur d'appartenances et NHibernate. Le UserRepository
est fourni par le conteneur Ninject IoC. Cependant, cela ne fonctionne pas lorsque le fournisseur est instancié par .NET: le constructeur sans paramètre n'a pas de UserRepository et ne peut pas en créer un (le UserRepository nécessite qu'une session NHibernate soit passée à son constructeur), qui alors signifie que le fournisseur ne peut pas accéder à son magasin de données. Comment puis-je résoudre ma dépendance aux objets?Injection de dépendances avec fournisseur d'appartenances personnalisées
Il est probablement intéressant de noter que c'est une application existante qui a été modernisés avec Ninject. Auparavant, j'utilisais des constructeurs sans paramètres qui étaient capables de créer leurs dépendances requises en conjonction avec les constructeurs paramétrés pour faciliter les tests unitaires.
Des pensées, ou est-ce que je me suis construit dans un coin ici?
Ninject a eu un adaptateur CSL officiel Janvier 2010. –
Il manque toujours de la page d'accueil CSL (il est inclus dans la version NInject à la place) – SztupY
"constructeur, qui initialise les référentiels nécessaires en utilisant Ninject" - attention, si vos référentiels (ou leurs dépendances) sont dans la portée Request ou Transient et le type de contexte de données jetable entre en jeu, vous finirez par accéder à un contexte de données éliminées sur toutes sauf la première requête (car vous ne contrôlez pas la durée de vie d'un fournisseur et ASP.NET le réutilisera à travers les requêtes). J'ai fini par obtenir une instance de référentiel du localisateur à chaque fois que je devais en appeler un quand je rencontrais ce problème. –