看过我之前的文章都知道前面我用反射实现的服务的自动注入,但是后期对项目进行整理时,设计到泛型,反射貌似就不太够用了,接下来带他们使用Autofac实现自动依赖注入吧.
1. 下载依赖 Autofac 和 Autofac.Extensions.DependencyInjection
2. 创建仓库
/// <summary>
/// Autofac注册模块
/// </summary>
public class AutofacModuleRegister : Module
{
protected override void Load(ContainerBuilder builder)
{
/*
* 注册仓库
* RegisterGeneric: 注册泛型类型
* InstancePerDependency: 每次注入时都会返回一个新的 BaseRepository<> 实例
*/
builder.RegisterGeneric(typeof(BaseRepository<>)).As(typeof(IBaseRepository<>)).InstancePerDependency();
}
}
3. 配置Host容器
builder.Host
.UseServiceProviderFactory(new AutofacServiceProviderFactory())
.ConfigureContainer<ContainerBuilder>(builder =>
{
builder.RegisterModule(new AutofacModuleRegister());
});
这样就算配置成功了,然后我们就可以直接使用不需要去手动注册: