改进我的NinjectBootstrapper静态类。

问题描述:

NinjectBootstrapper类已在Service项目中创建(负责获取产品)。 这是我的代码改进我的NinjectBootstrapper静态类。

public static class NinjectBootstrapper 
{ 
    private static readonly object _thislock = new object(); 

    //flag to prevent bootstrap for executing multiple times 
    private static bool _done; 

    public static void Bootstrap() 
    { 
    lock(_thislock) 
    { 
     if(_done) 
     { 
      return; 
     } 
     _done = true; 

     // services 
     NinjectContainer.Kernel.Bind<IProductService>().To<ProductService>(); 
     // repositories 
     NinjectContainer.Kernel.Bind<IProductRepository>().To<ProductRepository>(); 
    } 

    } 

} 

现在,虽然这工作,我真的想知道是否有更好的方法来重构我的代码。比如我读了很多关于使用单例而不是静态类的东西。 我想真正在这里设定一个好的基础,使未来的开发者能够轻松而灵活地扩展功能。我可以考虑哪些好的指针和提示?

我读过很多关于使用单例而不是静态类的东西。

当应用DI我们通常喜欢实例类在静态类,因为我们不能练习静态类构造器注入。然而,这并不意味着静态类是不好的做法。当类没有依赖性并且没有状态时,static没问题。

这也适用于启动路径中的代码,例如您的NinjectBootstrapper。你可以使它成为一个实例类,但由于这个类是在启动时直接启动的,因此不需要注入依赖关系(显然,因为它是连接DI容器的东西),所以将它作为实例类通常是无用的。

+0

啊谢谢你的解释。确实,这确实在启动时使用。谢谢你的解释。然后,我会离开我的代码。 –