Ninject的Singleton范围与静态字段类似?

时间:2012-07-19 06:07:38

标签: static ninject

过去,我使用原始反映类并设置为静态字段,如下

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. 如果更改装配,可以检测并重新加载新装配体吗?

1 个答案:

答案 0 :(得分:2)

  1. 是的,只有一个Foo的共享实例
  2. .NET Framework最多只加载一个程序集(每个AppDomain)。
  3. 不 - 你必须重新开始。