Autofac について読んだことがありますが、それは高速です。コーディングが含まれているのを見てきましたが、かなりきれいです。しかし、私はそれを使用する方法がよくわかりません。私は StructureMap を使用しましたが、これには静的な ObjectFactory があります。Ninjectにはカーネルがありますが、AutofacのGoogleページでは、次のようなことを推奨しています:
using( var resolver = builder.Build() ){
var whatINeed = resolver.Resolve<INeedThisService>();
}
これはWinFormsアプリなので、上記を実行して無効なオブジェクト状態になったので、グローバルIContainerに切り替えて、このようにしました
using( var resolver = Program.Container.CreateInnerContainer() )
{
var whatINeed = resolver.Resolve<INeedThisService>();
}
3、5回ほど使用しました。しかし、それは効率的ですか?または、次のようなことをする必要があります
var whatINeed = Program.Resolve<INeedThisService>()
そしてカバーの下
internal static TServervice Resolver<TService>(){
if(_container == null ) _container = builder.Build();
return _container.Resolve<TService>();
}
どちらを使用しますか?なぜですか? また、CreateInnerContainer() を使用した場合のペナルティはありますか?