.net core Autofac IOC 容器的简单使用

简介: ## 书接上回,介绍了[.net core 读取配置文件的几种方式](https://developer.aliyun.com/article/1363340?spm=a2c6h.13148508.setting.14.21764f0ehMR1KI ".net core 读取配置文件的几种方式"),本文学习Autofac的同时再次增加一种读取配置文件的方法。## 本文介绍Auofac,一个优秀的.NET IOC框架## 源码地址:https://github.com/autofac/Autofac# 1、打开NuGet包管理器安装Autofac.Extensions.Dependenc

书接上回,介绍了.net core 读取配置文件的几种方式,本文学习Autofac的同时再次增加一种读取配置文件的方法。

本文介绍Auofac,一个优秀的.NET IOC框架

源码地址:https://github.com/autofac/Autofac

1、打开NuGet包管理器安装Autofac.Extensions.DependencyInjection包

请在此添加图片描述

2、Program.cs 启用Autofac

public class Program
{
   
   
    public static void Main(string[] args)
    {
   
   
        CreateHostBuilder(args).Build().Run();
    }

    public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
            .UseServiceProviderFactory(new AutofacServiceProviderFactory()) // 启用Autofac
            .ConfigureWebHostDefaults(webBuilder =>
            {
   
   
                webBuilder.UseStartup<Startup>();
            });
}

3、Startup.cs 新增Autofac并初始化容器

请在此添加图片描述

// 一、autofac 新增
public ILifetimeScope AutofacContainer {
   
    get; private set; }
/// <summary>
/// 二、将内容直接注册到AutofacContainerBuilder中
/// </summary>
/// <param name="builder"></param>
public void ConfigureContainer(ContainerBuilder builder) 
{
   
   
}

请在此添加图片描述

// 三、autofac 新增 可选
AutofacContainer = app.ApplicationServices.GetAutofacRoot();
IoCContainer.InitContainer(AutofacContainer);

4、新建Autofac IOC 容器类

/// <summary>
/// Autofac IOC 容器
/// </summary>
public class IoCContainer 
{
   
   
    private static ILifetimeScope _container;
    /// <summary>
    /// 初始化容器
    /// </summary>
    /// <param name="services"></param>
    /// <returns></returns>
    public static void InitContainer(ILifetimeScope autofacContainer) 
    {
   
   
        _container = autofacContainer;
    }
    /// <summary>
    /// 从容器中获取对象 Resolve an instance of the default requested type from the container
    /// </summary>
    /// <typeparam name="T">类型</typeparam>
    /// <returns></returns>
    public static T Resolve<T>() 
    {
   
   
        return _container.Resolve<T>();
    }
}

5、新建读取配置文件工具类

/// <summary>
/// 配置文件读取操作
/// </summary>
public class Configs 
{
   
   
    private static readonly IConfiguration configuration;
    static Configs() 
    {
   
   
        configuration = IoCContainer.Resolve<IConfiguration>();
    }
    /// <summary>
    /// 根据Key获取数配置内容
    /// </summary>
    /// <param name="key"></param>
    /// <returns></returns>
    public static IConfigurationSection GetSection(string key) 
    {
   
   
        return configuration.GetSection(key);
    }
    /// <summary>
    /// 根据section和key获取配置内容
    /// </summary>
    /// <param name="section"></param>
    /// <param name="key"></param>
    /// <returns></returns>
    public static string GetConfigurationValue(string section, string key) 
    {
   
   
        return GetSection(section)?[key];
    }
    /// <summary>
    /// 根据Key获取数据库连接字符串
    /// </summary>
    /// <param name="key"></param>
    /// <returns></returns>
    public static string GetConnectionString(string key) 
    {
   
   
        return configuration.GetConnectionString(key);
    }
}

6、新建控制器,使用!读取配置的另一种方式来啦!

[ApiController]
[Route("[controller]")]
public class TestController : ControllerBase 
{
   
   
    /// <summary>
    /// 读取内容
    /// </summary>
    [HttpGet, HttpPost]
    public void GetContent() 
    {
   
   
        var url = Configs.GetSection("Setting:Url").Value; // http://localhost:8080/
        var name = Configs.GetConfigurationValue("Setting", "Name"); // localhost
    }
}

以上就是.net core AutoFac的简单学习使用 + 读取配置文件的新方式的介绍,做此记录,如有帮助,欢迎点赞关注收藏!

目录
相关文章
|
4天前
|
Java 测试技术 开发者
IoC容器有什么作用?
【4月更文挑战第30天】IoC容器有什么作用?
35 0
|
4天前
|
Java 测试技术 开发者
Spring IoC容器通过依赖注入机制实现控制反转
【4月更文挑战第30天】Spring IoC容器通过依赖注入机制实现控制反转
22 0
|
4天前
|
Java 开发者 容器
IoC容器如何实现依赖注入?
【4月更文挑战第30天】IoC容器如何实现依赖注入?
21 0
|
4天前
|
XML Java 数据格式
如何配置IoC容器?
【4月更文挑战第30天】如何配置IoC容器?
20 0
|
4天前
|
XML Java 程序员
什么是Spring的IoC容器?
【4月更文挑战第30天】什么是Spring的IoC容器?
20 0
|
4天前
|
开发框架 前端开发 JavaScript
JavaScript云LIS系统源码ASP.NET CORE 3.1 MVC + SQLserver + Redis医院实验室信息系统源码 医院云LIS系统源码
实验室信息系统(Laboratory Information System,缩写LIS)是一类用来处理实验室过程信息的软件,云LIS系统围绕临床,云LIS系统将与云HIS系统建立起高度的业务整合,以体现“以病人为中心”的设计理念,优化就诊流程,方便患者就医。
23 0
|
4天前
|
Linux API iOS开发
.net core 优势
.NET Core 的优势:跨平台兼容(Windows, macOS, Linux)及容器支持,高性能,支持并行版本控制,丰富的新增API,以及开源。
28 4
|
4天前
|
开发框架 人工智能 .NET
C#/.NET/.NET Core拾遗补漏合集(持续更新)
在这个快速发展的技术世界中,时常会有一些重要的知识点、信息或细节被忽略或遗漏。《C#/.NET/.NET Core拾遗补漏》专栏我们将探讨一些可能被忽略或遗漏的重要知识点、信息或细节,以帮助大家更全面地了解这些技术栈的特性和发展方向。
|
4天前
|
监控 Kubernetes Docker
【Docker 专栏】Docker 容器内应用的健康检查与自动恢复
【5月更文挑战第9天】本文探讨了Docker容器中应用的健康检查与自动恢复,强调其对应用稳定性和系统性能的重要性。健康检查包括进程、端口和应用特定检查,而自动恢复则涉及重启容器和重新部署。Docker原生及第三方工具(如Kubernetes)提供了相关功能。配置检查需考虑检查频率、应用特性和监控告警。案例分析展示了实际操作,未来发展趋势将趋向更智能和高效的检查恢复机制。
【Docker 专栏】Docker 容器内应用的健康检查与自动恢复
|
2天前
|
Java 虚拟化 Docker
Docker简介及用途,为什么要使用Docker?Docker容器和虚拟机的区别
Docker简介及用途,为什么要使用Docker?Docker容器和虚拟机的区别

热门文章

最新文章