Bonjour,
Je travail avec Unity pour implémenter mes interfaces dans mon projet.
J'ai créer mon propre IUnityContainer (qui ne fait rien de plus qu'encapsuler un UnityContainer et enregistrer mes implémentations).
J'enregistre une instance d'un DbContext avec un HierarchicalLifeTimeManager.
Lorsque je fais un CreateChildContainer() sur mon container et que je lui demande de résoudre mon DbContext, aucun soucis, il me fournis bien une instance de DbContext différente que le container racine.
J'injecte par le constructeur mon DbContext à mes implémentations. Par contre la, le container enfant injecte toujours la même instance de DbContext, quelque soit la hiérarchie de mon conteneur.
Comment faire pour que, lorsque les container d'une hiérarchie différente me resolve une interface, le DbContext injecté par le cosntructeur soit une nouvelle isntance ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 private void RegisterAdhocImpl(string nomBase) { this.RegisterType<AdhocContext>(new HierarchicalLifetimeManager(), new InjectionConstructor(nomBase)); this.RegisterInstance<ContextUtilisateur>("ContextUtilisateur", new ContextUtilisateur()); RegisterAdhocImpl(); } private void RegisterAdhocImpl() { this.RegisterType<IAdresseRepository, AdresseRepository>(new PerResolveLifetimeManager(), new InjectionConstructor(this.Resolve<AdhocContext>(), this.Resolve<ContextUtilisateur>("ContextUtilisateur"))); }
Partager