1 引用Nuget包autofac
<ItemGroup>
<PackageReference Include="Autofac" Version="7.1.0" />
<PackageReference Include="Autofac.Extensions.DependencyInjection" Version="8.0.0" />
</ItemGroup>
2 添加autofac模块化配置代码
创建一个测试服务
namespace WorldSystem.Api.Common.Services
{
public class TodayTestService
{
public string ShowTime()
{
string time = DateTime.Now.ToString();
Console.WriteLine(time);
return time;
}
}
}
在autofac模块配置中注册服务
using Autofac;
using System.Reflection;
using WorldSystem.Api.Common.Services;
namespace WorldSystem.Api.Configs
{
public class AutofacModuleConfig:Autofac.Module
{
protected override void Load(ContainerBuilder builder)
{
// 批量注册服务
//Assembly interfaces = Assembly.Load("Interfaces");
//Assembly services = Assembly.Load("Services");
//builder.RegisterAssemblyTypes(interfaces, services).AsImplementedInterfaces();
// 注册服务
builder.RegisterType<TodayTestService>();
}
}
}
3 替换aspnetcore自带容器
在Program.cs上添加如下代码:
#region 替换为autofac依赖注入容器
builder.Host.UseServiceProviderFactory(new AutofacServiceProviderFactory())
.ConfigureContainer<ContainerBuilder>(containerBuilder =>
{
containerBuilder.RegisterModule(new AutofacModuleConfig());
});
#endregion
以上步骤只包含了创建Autofac容器和注册服务的过程,若要实现完整的依赖注入,还需要在控制器中添加构造函数,通过构造函数将需要的服务注入到控制器中2。