.NET6使用autofac依賴自動注入


1.Nuget引入以下包:

Autofac
Autofac.Extensions.DependencyInjection
Autofac.Extras.DynamicProxy

2.需要依賴注入的程序集隨便建個類,里面建個方法GetAssemblyName()獲取程序集名稱;

using System.Reflection;

namespace Service
{
    public static class ServiceAutofac
    {
        /// <summary>
        /// 獲取程序集名稱
        /// </summary>
        /// <returns></returns>
        public static string GetAssemblyName()
        {
            return Assembly.GetExecutingAssembly().GetName().Name;
        }
    }
}

3.Program.cs中注入autofac,需要注入的類和程序集如下:

// 以下是autofac依賴注入
builder.Host.UseServiceProviderFactory(new AutofacServiceProviderFactory());
builder.Host.ConfigureContainer<ContainerBuilder>(builder =>
{
     //先注入JWT
     builder.RegisterType<AuthorizeJWT>().As<IAuthorizeJWT>();//可以是其他接口和類
     // 注入Service程序集
     Assembly assembly = Assembly.Load(ServiceAutofac.GetAssemblyName());//可以是其他程序集
    builder.RegisterAssemblyTypes(assembly)
    .AsImplementedInterfaces()
    .InstancePerDependency();
});

4.使用-構造函數:

        private readonly IConfiguration _configuration;//配置
        private Authorize.IAuthorizeJWT _authorizeJWT;//認證
        private readonly ILogger<LoginController> _logger;//日志
       //依賴注入
        public LoginController(IConfiguration configuration, ILogger<LoginController> logger, Authorize.IAuthorizeJWT authorizeJWT)
        {
            _configuration = configuration;
            _logger = logger;
           _authorizeJWT=authorizeJWT;
        }

5.使用:

        /// <summary>
        /// 用戶登錄
        /// </summary>
        /// <param name="user"></param>
        /// <returns></returns>
        [HttpPost]
        public string Login([FromBody]ViewModels.UserLogin user)
        {
            _logger.LogError($"{System.Reflection.MethodBase.GetCurrentMethod().Name} Args:{user.ToString()}");
            return _authorizeJWT.GetJWTBear(user);
        }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM