JC *_*bbs 48 c# dependency-injection ninject ioc-container inversion-of-control
我在一个新的Web应用程序上使用NInject,有两件事我不清楚:
我是否需要保持对内核(Session/App变量)的引用以确保GC不收集我的所有实例?例如,如果我指定.Using()然后收集Kernel对象,那么我的所有"单身人士"都不是被收集的吗?
如果我确实需要保持对Kernel对象的引用,我如何允许传入WithArguments()的参数改变或者这是不可能的.
Nat*_*ari 29
确实,你不想传递内核.通常,在Web应用程序中,我将内核存储在HttpApplication中的静态属性中.如果需要对内核的引用,则只需公开IKernel类型的依赖项(通过构造函数参数或属性),Ninject将为您提供对激活该类型的内核的引用.
如果在绑定上使用WithArguments(),它们将用于所有激活.如果您使用IParameters,它们将仅用于该激活.(但是,如果您正在激活的服务具有像Singleton这样的可重用行为,即使您传递了不同的IParameters,也不会重新激活它.)