.netcore使用autofac
.netcore3.1使用autofac
(.netcore中本身已经实现了IOC容器,其实没有必要替换成autofac。如果非常习惯autofac,替换也是无可厚非的。)
第一步、在项目中引入Autofac和Autofac.Extensions.DependencyInjection
第二步、修改program.cs
public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup<Startup>(); }) .UseServiceProviderFactory(new AutofacServiceProviderFactory());
第三步、在startup.cs中实现方法
public void ConfigureContainer(ContainerBuilder builder) { #region 注入业务服务(此处使用反射注入) Assembly assembly = Assembly.Load("Qingy.DotNetCoreStudy.CustomerServiceService"); List<Type> types = assembly.GetTypes().Where(u => u.IsClass && !u.IsAbstract && !u.IsGenericType && u.GetInterfaces().Any(p => p == typeof(ICustomerServicerSerice)) ).ToList(); builder.RegisterTypes(types.ToArray()).InstancePerLifetimeScope(); //注入,并声明生命周期 #endregion }
测试