IOC Auofacの純コア3.1

コントロールの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(); 
        }

 

おすすめ

転載: www.cnblogs.com/xingzhu-nan/p/12547929.html