.NET CORE Autofac批量依赖注入
1、右键添加Autofac的Nuget包
2、修改Startup类的ConfigureServices方法:
单个依赖注入是:
services.AddTransient<IUserInfoService, UserService>();
批量依赖注入是:
//批量匹配注入,使用AutoFac提供的容器接管当前项目默认容器
var builder = new ContainerBuilder();
//注入entity层的repository类builder.RegisterType(typeof(TUserRepository)).As(typeof(IUserRepository)).InstancePerDependency();
//批量注入Repository的类
var assembly = Assembly.Load("Service");
builder.RegisterAssemblyTypes(assembly).AsImplementedInterfaces();
builder.Populate(services);
var container = builder.Build();
//ConfigureServices方法由void改为返回IServiceProvider
return new AutofacServiceProvider(container);
整个方法示例:
public IServiceProvider ConfigureServices(IServiceCollection services)
{
services.Configure<CookiePolicyOptions>(options =>
{
// This lambda determines whether user consent for non-essential cookies is needed for a given request.
options.CheckConsentNeeded = context => true;
options.MinimumSameSitePolicy = SameSiteMode.None;
});
#region EF连接MYSQL
services.AddDbContext<EFDbContext>(options =>
{
var connection = this.Configuration["DbConnection:mySqlConn"];
options.UseMySQL(connection);
});
#endregion
//将Iservices注入到Services,依赖注入
//services.AddTransient<IUserInfoService, UserService>();
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
批量匹配注入,使用AutoFac提供的容器接管当前项目默认容器
var builder = new ContainerBuilder();
//注入entity层的repository类builder.RegisterType(typeof(TUserRepository)).As(typeof(IUserRepository)).InstancePerDependency();
//批量注入Repository的类
var assembly = Assembly.Load("Service");
builder.RegisterAssemblyTypes(assembly).AsImplementedInterfaces();
builder.Populate(services);
var container = builder.Build();
//ConfigureServices方法由void改为返回IServiceProvider
return new AutofacServiceProvider(container);
}
依赖注入相关理解可以去看:
https://blog.youkuaiyun.com/hiliqi/article/details/80611209