2012-07-19 38 views
0

在过去,我用原来的反映类,并设置为静态字段,如下Ninject的Singleton作用域与静态域相似吗?

public class ServiceHelper{ 
    private static IFoo _iFoo=null; 
    public static IFoo Foo{ 
     get{ 
      if(_iFoo==null) 
      { 
       _iFoo=Activator.CreateInstance("assembly") as IFoo; 

      } 
      return _iFoo; 
      } 
    } 

} 

,现在我们正在使用Ninject

kernel.Bind(x => x.FromAssembliesInPath("assembilypath") 
.SelectAllClasses() 
.BindDefaultInterface().Configure(binding => binding.InSingletonScope())); 

问题:

  1. 这两种方法是一样的吗?

  2. Ninject会只加载一次程序集?

  3. 如果更换组件,是否可以检测并重新装配新组件?

回答

2
  1. 是会有美孚
  2. 的正好一个共享实例.NET框架将(每个AppDomain)一次加载每个组件至多。
  3. 否 - 您将不得不重新启动。