对象范围DI C#的主要用途是什么

时间:2016-08-02 09:33:17

标签: c# dependency-injection ninject

请您帮我理解DI c#中必须使用对象范围的位置。 这是什么目的?

kernel.Bind<Shogun>().ToSelf().InSingletonScope();  

1 个答案:

答案 0 :(得分:2)

Scope aka Lifetime Scope是每个应用程序中非常重要的一部分,尤其是涉及依赖注入时。

通过依赖注入,您不仅可以放弃对创建实现的控制,还可以放弃对此实例的破坏。

设置生命周期指示DI容器何时破坏实例,如果有该类型的新请求,则创建一个新实例。

有几种不同的生命周期:

  • Singleton:在应用程序的生命周期内,只创建了某个组件的一个实例。
  • 瞬态:每次需要一个实例时,都会创建一个新实例
  • PerRequest:每个请求都创建并重用一个实例。请求可能是很多事情。对于ASP.net mvc,请求通常是HTTPrequest。对于Windows窗体应用程序,请求应由应用程序确定,通常在某个“使用”块内。

可以在此处找到Ninject细节: https://github.com/ninject/ninject/wiki/Object-Scopes