AutoFac的使用

目的:批量注册服务,不需要全部都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
});
订阅评论
提醒
0 评论
最旧
最新 最多投票
内联反馈
查看所有评论
滚动至顶部