使用autofac实现模块化注入
1.package address https://www.nuget.org/packages/Autofac.ModularInjection.DependencyInjection/
1.创建.net core2.2或 3.0+项目,
2.添加初始化模块类,此类需继承DiModule,如 public class StartupDiModule: ModularInjection.DiModule
,若想实现跨类库注入,
请在初始化模块类添加此特性 [DependsOn(typeof(模块化类))]
public IServiceProvider ConfigureServices(IServiceCollection services)
{
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
return services.AddModule<StartupDiModule>();
}
public class Program
{
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.UseServiceProviderFactory(new AutofacServiceProviderFactory<StartupDiModule>())
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
}
public void ConfigureContainer(ContainerBuilder builder)
{
//自定义注入
}
[DependsOn(typeof(模块化类))]
public class StartupDiModule: ModularInjection.DiModule
{
public override void PreInitialize()
{
//预初始化
}
public override void Initialize()
{
//初始化
}
public override void PostInitialize()
{
//后初始化
}
}