.NET6中使用Autofac组件

发布时间 2023-08-24 21:28:16作者: computerCat

  Autofac 是.NET IoC 容器 . 它管理类之间的依赖关系, 从而使 应用在规模及复杂性增长的情况下依然可以轻易地修改 . 它的实现方式是将常规的.net类当做 组件 处理.

1. 安装Nuget包

2. 在Api中创建一个AutofacModule的类

using Autofac;
using System.Reflection;

namespace Demo.WebApi
{
    public class AutofacModule:Autofac.Module
    {
        protected override void Load(ContainerBuilder builder)
        {
            var assembly = Assembly.Load("要管理的类的类名");
            builder.RegisterAssemblyTypes(assembly)
                .Where(u => u.Name.EndsWith("要管理的类的类名后缀"))
                .AsImplementedInterfaces();
            base.Load(builder);
        }
    }
}

 3. Program.cs中注册

using Autofac;

//注入Autofac
builder.Host.UseServiceProviderFactory(new AutofacServiceProviderFactory()).ConfigureContainer<ContainerBuilder>
(builder =>
{
    builder.RegisterModule<AutofacModule>();
});

 4. 在服务层或控制器构造函数中注入

private readonly IMapper _mapper;

public UserController(IMapper mapper)
{
    _mapper = mapper;
}

登录案例中使用

[HttpPost]
[Route("Login")]
public IActionResult Login(UserInfoDto info)
{
    var userInfo=_mapper.Map<UserInfoDto,UserModel>(info);
    var result = user.Login(userInfo);
    return Ok(result);
}