.net core Autofac IOC 容器的简单使用
书接上回,介绍了.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的简单学习使用 + 读取配置文件的新方式的介绍,做此记录,如有帮助,欢迎点赞关注收藏!
.net core Autofac IOC 容器的简单使用的更多相关文章
- .Net Core中IOC容器的使用
打代码之前先说一下几个概念,那就是什么是IOC.DI.DIP 虽然网上讲这些的已经有很多了,我这里还是要再赘述一下 IOC容器就是一个工厂,负责创建对象的 IOC控制反转:只是把上端对下端的依赖,换成 ...
- Autofac IoC容器基本使用步骤【1】
原文:http://www.bkjia.com/Asp_Netjc/888119.html [原文中有一个地方报错,下面已修改] 一.基本步骤: 1.设计适合控制反转(IoC)的应用程序 2.给应用 ...
- Unity IOC容器的简单应用(转)
转自:http://blog.csdn.net/wanzhuan2010/article/details/7763280 Unity是Unity是微软patterns& practices组用 ...
- Autofac IoC容器基本实战【2】
原文:http://www.cnblogs.com/liping13599168/archive/2011/07/16/2108209.html Autofac是一款IOC框架,比较于其他的IOC框架 ...
- 微软IOC容器Unity简单代码示例3-基于约定的自动注册机制
@(编程) [TOC] Unity在3.0之后,支持基于约定的自动注册机制Registration By Convention,本文简单介绍如何配置. 1. 通过Nuget下载Unity 版本号如下: ...
- 微软IOC容器Unity简单代码示例2-配置文件方式
@(编程) 1. 通过Nuget下载Unity 这个就不介绍了 2. 接口代码 namespace UnityDemo { interface ILogIn { void Login(); } } n ...
- 微软IOC容器Unity简单代码示例1
@(编程) 1. 通过Nuget下载Unity 这个就不介绍了 2. 接口代码 namespace UnityDemo { interface ILogIn { void Login(); } } 3 ...
- IoC容器Autofac学习笔记
一.一个没有使用IoC的例子 IoC的全称是Inversion of Control,中文叫控制反转.要理解控制反转,可以看看非控制反转的一个例子. public class MPGMovieList ...
- 几句代码简单实现IoC容器
前言 最近在调试EasyNetQ代码的时候发现里面有一段代码,就是IoC容器的简单实现,跟着他的代码敲了一遍,发现了奇妙之处.当然也是因为我才疏学浅导致孤陋寡闻了.他的思路就是通过动态调用构造函数生成 ...
- 手写IOC容器
IOC(控制翻转)是程序设计的一种思想,其本质就是上端对象不能直接依赖于下端对象,要是依赖的话就要通过抽象来依赖.这是什么意思呢?意思就是上端对象如BLL层中,需要调用下端对象的DAL层时不能直接调用 ...
随机推荐
- QQ登录
public function login(){ $urlencode = urlencode("http://www.zhangxuhui.com/index/Index/callback ...
- K8s 超详细总结
一个目标:容器操作:两地三中心:四层服务发现:五种Pod共享资源:六个CNI常用插件:七层负载均衡:八种隔离维度:九个网络模型原则:十类IP地址:百级产品线:千级物理机:万级容器:相如无亿,K8s有亿 ...
- Ubuntu 22.04 搭建K8s集群
目录 1. 虚拟机基础配置 配置静态ip 设置主机名 设置hosts 安装ssh 2. Ubuntu系统设置 禁用swap 修改内核参数 3. 安装containerd 4. 安装Kubernetes ...
- linux安装influxdb和chronograf
安装环境: Alibaba Cloud Linux 安装influxdb 1.下载.安装 wget https://dl.influxdata.com/influxdb/releases/influx ...
- 记开源项目:DotNetCore.CAP.MySql问题分析:only mysqlparameter objects may be stored
1. 简介 最近在学习分布式事务及解决方案,最终找到了开源项目DotNetCore.CAP ,因为自己用的MySql数据库比较多.于是也使用MySQL+EFCore+RabbitMQ+CAP实现事务 ...
- Java多线程详解(通俗易懂)
一.线程简介 1. 什么是进程? 电脑中会有很多单独运行的程序,每个程序有一个独立的进程,而进程之间是相互独立存在的.例如图中的微信.酷狗音乐.电脑管家等等. 2. 什么是线程? 进程想要执行任务就需 ...
- 手把手教你一套完善且高效的k8s离线部署方案
作者:郝建伟 背景 面对更多项目现场交付,偶而会遇到客户环境不具备公网条件,完全内网部署,这就需要有一套完善且高效的离线部署方案. 系统资源 编号 主机名称 IP 资源类型 CPU 内存 磁盘 01 ...
- 神奇的DEBUG:因为异常导致MongoDB容器无法启动
越来越多的项目使用docker进行环境搭建,统一了开发和运行环境,好处颇多.但同时也引入了许多复杂性,比如一些容器服务突然无法启动,那么debug起来就比物理机安装的服务麻烦一些. 这段时间Mac P ...
- 虚假新闻检测(CADM)《Unsupervised Domain Adaptation for COVID-19 Information Service with Contrastive Adversarial Domain Mixup》
论文信息 论文标题:Unsupervised Domain Adaptation for COVID-19 Information Service with Contrastive Adversari ...
- JavaScript 中如何拦截全局 Fetch API 的请求和响应?
本文翻译自 Intercepting JavaScript Fetch API requests and responses 拦截器是可用于预处理或后处理 HTTP 请求的代码块,有助于全局错误处理. ...