目的:批量注册服务,不需要全部都builder.Service.add
底层逻辑是将日志服务注入到DI容器中,通过DI容器创造对应实例
C#
private readonly ILogger<WeatherForecastController> _logger;
public WeatherForecastController(ILogger<WeatherForecastController> logger)
{
_logger = logger;
}
AutoFac管道Load方法修改Config
C#
using Autofac;
using System.Reflection;
namespace bilibiliStudy.Config
{
public class AutoModuleRegister:Autofac.Module
{
/// <summary>
/// 重写AutoFac管道Load方法,在这里注册注入
/// </summary>
/// <param name="builder"></param>
protected override void Load(ContainerBuilder builder)
{
//批量注册Interface和Service这两个程序集 通过反射
Assembly InterfaceAssembly = Assembly.Load("Interface");
Assembly ServiceAssembly = Assembly.Load("Service");
builder.RegisterAssemblyTypes(InterfaceAssembly, ServiceAssembly).AsImplementedInterfaces();
}
}
}
替换内置IOC
C#
//替换内置IOC
builder.Host.UseServiceProviderFactory(new AutofacServiceProviderFactory());
builder.Host.ConfigureContainer<ContainerBuilder>(container =>
{
#region 通过模块化的方式注册接口层和服务层
container.RegisterModule(new AutoModuleRegister());
#endregion
});