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つの方法は同じですか?

  2. Ninjectはアセンブリを1回だけロードしますか?

  3. アセンブリを変更した場合、ninject が検出され、新しいアセンブリをリロードできますか?

4

1 に答える 1

2
  1. はい、Foo の共有インスタンスは 1 つだけです。
  2. .NET Framework は、各アセンブリを最大 1 回 (AppDomain ごとに) 読み込みます。
  3. いいえ - 再起動する必要があります。
于 2012-07-19T12:18:02.507 に答える