استفاده از Autofac به جای اینجکتور توکار dotnet core

آخرین بروز رسانی: 1400/08/10

Autofac یکی از بهترین و سریعترین و محبوبترین ioc های دانت هست که مدیریت کامل برای ساخت ابجکتها و چرخه حیاط آنها را اراعه می دهد که بسیار کاملتر از ioc توکار خود دانت میباشد که با بزرگتر شدن پروژه ممکن است به آنها نیاز داشته باشید.
از این رو گزینه مناسبی برای جایگزینی آن با ioc خود دانت دارد.

در این لینک جدول مقایسه مدیریت چرخه حیاط ابجکتها را میبینید 

بعد از ایجاد پروژه از جنس dotnet core 
به سراغ پنجره Package Manager Console بروید و این 2 پکیج رو نصب کنید


Install-Package Autofac - 
Install-Package Autofac.Extensions.DependencyInjection - 

 

سپس به سراغ فایل Progeram.cs بروید و تغییر زیر را انجام دهید

public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
            .UseServiceProviderFactory(new AutofacServiceProviderFactory())
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder.UseStartup<Startup>();
                });

دقت کنید که خط قرمز تنها تغییر بخش میباشد.

و کار تمام شد. الان شما پکیج Autofac  را نصب کرده و به برنامه گفتید که از AutoFac   به جای اینجکتور خود dotnet استفاده کند

حالا برای ثبت dependencyها وارد فایل statup.cs  شوید و کد زیر را کپی کنید



   public void ConfigureContainer(ContainerBuilder builder)
        {
            //#روش اول ثبت کلاسها
            //builder.RegisterModule(new MyAutofacModule());
            ////builder.RegisterModule(new MyAutofacModule2());
            ////builder.RegisterModule(new MyAutofacModule3());


            روش دوم : ثبت مستقیم //          
             builder.RegisterType<MyService2>().As<IService>();
        }

    

 

دقت کنید این تابع بعد از ConfigureServices صدا زده میشود. و شما میتوانید کلاسهای خود را در Autofac یا در IOC  تو کار خود دانت نت ثبت و اینجکت نمایید

 

  نکته:💡     حتی در صورت افزودن autofac هنوز هم امکان استفاده از IOC پیشفرض خود dotnet وجود دارد و شما میتوانید کلاسها رو در IOC خود dotnet ثبت و اینجکت کنید. ولی در صورت ثبت در هر دو IOC اولیت با Autofac خواهد بود

 

نظر دهید

آدرس ایمیل شما منتشر نخواهد شد. فیلدهای الزامی علامت گذاری شده اند *