1. 程式人生 > 其它 >Asp.net Core3.1使用Autofac

Asp.net Core3.1使用Autofac

安裝Autofac

Program檔案中加入UseServiceProviderFactory

 public class Program
    {
        public static void Main(string[] args)
        {
            CreateHostBuilder(args).Build().Run();
        }

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

Startup 檔案ConfigureServices方法新增:

        services.Replace(
   ServiceDescriptor
       .Transient<IControllerActivator, ServiceBasedControllerActivator>()
);

新增ConfigureContainer方法

 public void ConfigureContainer(ContainerBuilder builder)
        {

            var assembly1= Assembly.GetAssembly(typeof(BaseService));
            var assembly2 = Assembly.GetExecutingAssembly();
            builder.RegisterAssemblyTypes(assembly1)
                .PublicOnly()
                .Where(r 
=> r.Name.EndsWith("Service")) .AsImplementedInterfaces() .PropertiesAutowired() .InstancePerLifetimeScope(); builder.RegisterType<HttpContextAccessor>().As<IHttpContextAccessor>(); var controllersTypesInAssembly = typeof(Startup).Assembly.GetExportedTypes() .Where(type => typeof(Microsoft.AspNetCore.Mvc.ControllerBase).IsAssignableFrom(type)).ToArray(); builder.RegisterTypes(controllersTypesInAssembly).PropertiesAutowired(); }