コントロールのIOC -------反転
すべてのコンテナを管理できるようにするので、自然なコンテナは、オブジェクトのライフサイクルを管理できるだけでなく、AOP(注入時のいくつかのロジック)
純コアはServiceCollectionで、3つのライフサイクルがあり、IOCのコンテナを構築しました
ほとんどとAddTransient -----瞬間、
リクエストのAddScoped -----唯一のインスタンス
AddSingleton -----スレッドの唯一のインスタンス
しかしServiceCollectionは制限があります:あなたがいないバッチ注入、AOPを実現することはできません。
解決策:このようAtuofacとして使用するサードパーティIOCコンテナ、
ステップ1:2つのアセンブリを導入Autofac.Extras.DynamicProxy(Autofac動的プロキシは、それがAutofacに依存し、別々 Autofacことなく組み込むことができる)、Autofac.Extensions.DependencyInjection(Autofac拡張)
STEP2:Program.csの中に古いコンテナを置き換えます
パブリック 静的 IHostBuilder CreateHostBuilder(文字列 []引数)=> Host.CreateDefaultBuilder(引数).UseServiceProviderFactory( 新しいAutofacServiceProviderFactory()) .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup <起動時> (); });
ステップ3:Startup.csにConfigureContainerメソッドの追加します
公共 ボイドConfigureContainer(ContainerBuilder containerBuilder) { VARの assemblyFiles Assembly.LoadFrom =(「filePathName 」); // 指定スキャナ・レジスタ・セットのタイプは、その実装のすべてのインタフェースを提供します。 containerBuilder.RegisterAssemblyTypes(assemblyFiles).AsImplementedInterfaces(); }