Autofac 常用使用说明
Autofac 是一个功能更强大的第三方 IoC 容器,在 ASP.NET Core 自带 DI 的基础上,补上了程序集扫描、Module等更灵活的能力。
本文以 Autofac 9.x 和普通 .NET 应用为例,介绍 Autofac 使用方式。适用于控制台程序、桌面应用、后台任务、Windows Service 以及其他 .NET 应用。
Autofac 也可以在 ASP.NET Core 中使用,参考 ASP.NET Core 集成官方文档。
1. Autofac 是什么
Autofac 是一个 .NET IoC(控制反转)容器,主要负责:
- 创建对象。
- 自动注入对象依赖。
- 管理对象生命周期。
- 自动释放
IDisposable和IAsyncDisposable对象。 - 在接口存在多个实现时选择合适的实现。
- 通过 Module、程序集扫描等方式组织服务注册。
Autofac 的基本使用流程是:
创建 ContainerBuilder
↓
注册服务
↓
调用 Build() 创建容器
↓
创建 LifetimeScope
↓
解析应用入口对象
↓
使用结束后释放 Scope
2. 安装 Autofac
在项目目录执行:
dotnet add package Autofac
或者在项目文件中添加:
<ItemGroup>
<PackageReference Include="Autofac" Version="9.*" />
</ItemGroup>
3. 一个完整的入门示例
3.1 定义服务接口
public interface IMessageWriter
{
void Write(string message);
}
3.2 编写实现类
public sealed class ConsoleMessageWriter : IMessageWriter
{
public void Write(string message)
{
Console.WriteLine(message);
}
}