配置AutoFacManger.cs

阳仔吗發表於2024-05-20

使用配置AutoFacManger的好處是不用我們像之前一樣寫一層注入一層,這樣自動注入只要我們命名規範的話,就可以實現不在用去Program中手動後注入

建立一個類裡邊寫

 public class AutoFacManger : Autofac.Module

    {

        /// <summary>

        /// 自動注入

        /// </summary>

        /// <param name="builder"></param>

        protected override void Load(ContainerBuilder builder)

        {

 

 

            //注入介面

            var IRepository = Assembly.Load("Repository");

            var Service = Assembly.Load("Service");

            builder.RegisterAssemblyTypes(IRepository)

              .Where(t => t.Name.EndsWith("Repository"))

              .AsImplementedInterfaces();//自動去尋找實現的介面

            builder.RegisterAssemblyTypes(Service)

            .Where(t => t.Name.EndsWith("Service"))

            .AsImplementedInterfaces();//自動去尋找實現的介面

 

        }

    }

}

Program中配置

//使用AutoFac來接管原來的IOC和DI註冊AutoFac
builder.Host.UseServiceProviderFactory(new AutofacServiceProviderFactory()).ConfigureContainer<ContainerBuilder>(builder =>
{
    builder.RegisterModule(new AutoFacManger());
});