Dotnet Core Autofac
一、为什么使用Autofac?
Autofac是一款IOC框架,比较于其他的IOC框架,如Spring.NET,Unity,Castle等等所包含的,它很轻量级性能上非常高,Autofac是.NET领域最为流行的IOC框架之一,传说是速度最快的一个。
官方网站http://autofac.org/
源码下载地址https://github.com/autofac/Autofac
- 控制反转(IoC/Inverse Of Control): 调用者不再创建被调用者的实例,由autofac框架实现(容器创建)所以称为控制反转。
- 依赖注入(DI/Dependence injection) : 容器创建好实例后再注入调用者称为依赖注入
二、AutoFac的使用
NuGet安装程序包

封装ConfigureAutofac方法通过ConfigureServices进行调用实现自动注入
[
](javascript:void(0)😉
/// <summary>
/// autofac 自动注入
/// </summary>
/// <param name="services"></param>
/// <returns></returns>
public IServiceProvider ConfigureAutofac(IServiceCollection services)
{
//初始化容器
var builder = new ContainerBuilder();
//管道寄居
builder.Populate(services);
//业务逻辑层所在程序集命名空间
Assembly service = Assembly.Load("Api.Service");
//业务逻辑层接口所在程序集命名空间
Assembly iService = Assembly.Load("Api.IService");
//数据访问层所在程序集命名空间
Assembly data = Assembly.Load("Api.Data");
//数据访问层接口所在程序集命名空间
Assembly iData = Assembly.Load("Api.IData");
//自动注入
builder.RegisterAssemblyTypes(service, iService, data, iData)
.AsImplementedInterfaces();
//构造
var ApplicationContainer = builder.Build();
//将AutoFac反馈到管道中
return new AutofacServiceProvider(ApplicationContainer);
}
[
](javascript:void(0)😉
//autofac 自动注入
return ConfigureAutofac(services);
Controller中使用
[
](javascript:void(0)😉
[Route("api/[controller]/[action]")]
public class AuthController : ApiController
{
private readonly ITokenService _tokenService;
/// <summary>
///
/// </summary>
public AuthController(ITokenService tokenService)
{
_tokenService = tokenService;
}
}
[
](javascript:void(0)😉

浙公网安备 33010602011771号