.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结尾的文件进行注入;

 

 这样就能在需要使用的控制器构造函数里直接使用任意的类了。

posted @ 2022-07-22 14:16  上山下水  阅读(549)  评论(0编辑  收藏  举报