2010-06-02 11 views
2

Est-il possible de savoir qu'une dépendance particulière a déjà été satisfaite par ninjectkernel? Pour être clair:Comment obtenir si l'objet est déjà récupéré dans l'injection

Supposons que nous avons ce module:

Bind<IA>().To<A>(); 
Bind<IB>().To<B>(); 

Et certains "client" -code:

var a = kernel.Get<IA>(); 

// how to get here "true" for assumption: "IA was requested (once)" 
// and "false" for: "IB was not requested ever" 
+0

Pourquoi auriez-vous besoin jamais ça? –

+0

@Krzysztof Koźmic: il est lié à une autre question: http://stackoverflow.com/questions/2953624/ioc-and-datacontext-disposing-in-asp-net-mvc-2-application. donc j'ai besoin de savoir si je devrais disposer de DB (il a été utilisé) ou non. – zerkms

Répondre

1

Vous pouvez utiliser .Avant * et * .Après dans le fluent bindings à accrocher dans un appel à quelque chose pour le marquer utilisé. Ou vous pouvez regarder les crochets IDisposable (voir les tests dans le téléchargement de la source).

Il y a de bonnes informations de fond dans http://kohari.org/2009/03/06/cache-and-collect-lifecycle-management-in-ninject-20/ trop

+0

Hmmmm, je n'ai pas trouvé de crochets Avant/Après dans les sources. Pouvez-vous préciser plus précisément, s'il vous plaît? – zerkms