.NET6开发WEBAPI练习—使用Autofac完成依赖注入
使用到的nuget包是分别是:Autofac.Extensions.DependencyInjection、Autofac.Extras.DynamicProxy和System.Reflection这三个。
用两个类库来做测试(名字随便起的)
网上看到的基础教程是使用下面的语法在Program.cs中进行添加,是可以实现效果的,只是文件多了之后就比较麻烦了。
builder.Services.AddSingleton<ITestAutofacService, TestAutofacService>();
在Program.cs中将上面的写法改成下面的代码
#region Autofac builder.Host.UseServiceProviderFactory(new AutofacServiceProviderFactory()); var hostBuilder = builder.Host.ConfigureContainer<ContainerBuilder>(builder => { try { var assemblysServices = Assembly.Load("FlowerShow.Service"); var assemblysRepository = Assembly.Load("FlowerShow.Repository"); builder.RegisterAssemblyTypes(assemblysServices).Where(t => t.Name.EndsWith("Service")).AsSelf().AsImplementedInterfaces(); builder.RegisterAssemblyTypes(assemblysRepository).Where(t => t.Name.EndsWith("Repository")).AsSelf().AsImplementedInterfaces(); } catch (Exception ex) { throw new Exception(ex.Message + "\n" + ex.InnerException); } }); #endregion
映射类库中所有以Service和repository结尾的文件进行注入;
这样就能在需要使用的控制器构造函数里直接使用任意的类了。