0

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

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. 如果更改程序集,是否可以检测到 ninject 并重新加载新程序集?

4

1 回答 1

2
  1. 是的,会有一个共享的 Foo 实例
  2. .NET Framework 将最多加载每个程序集一次(每个 AppDomain)。
  3. 不 - 您将不得不重新启动。
于 2012-07-19T12:18:02.507 回答