前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >.net core Autofac IOC 容器的简单使用

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

原创
作者头像
GoodTime
发布2023-10-31 13:36:57
2830
发布2023-10-31 13:36:57
举报

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

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

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

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

2、Program.cs 启用Autofac

代码语言:c#
复制
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并初始化容器

代码语言:c#
复制
// 一、autofac 新增
public ILifetimeScope AutofacContainer { get; private set; }
/// <summary>
/// 二、将内容直接注册到AutofacContainerBuilder中
/// </summary>
/// <param name="builder"></param>
public void ConfigureContainer(ContainerBuilder builder) 
{
}
代码语言:c#
复制
// 三、autofac 新增 可选
AutofacContainer = app.ApplicationServices.GetAutofacRoot();
IoCContainer.InitContainer(AutofacContainer);

4、新建Autofac IOC 容器类

代码语言:c#
复制
/// <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、新建读取配置文件工具类

代码语言:c#
复制
/// <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、新建控制器,使用!读取配置的另一种方式来啦!

代码语言:c#
复制
[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的简单学习使用 + 读取配置文件的新方式的介绍,做此记录,如有帮助,欢迎点赞关注收藏!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 书接上回,介绍了.net core 读取配置文件的几种方式,本文学习Autofac的同时再次增加一种读取配置文件的方法。
  • 本文介绍Auofac,一个优秀的.NET IOC框架
  • 源码地址:https://github.com/autofac/Autofac
  • 1、打开NuGet包管理器安装Autofac.Extensions.DependencyInjection包
    • 2、Program.cs 启用Autofac
      • 以上就是.net core AutoFac的简单学习使用 + 读取配置文件的新方式的介绍,做此记录,如有帮助,欢迎点赞关注收藏!
  • 3、Startup.cs 新增Autofac并初始化容器
  • 4、新建Autofac IOC 容器类
  • 5、新建读取配置文件工具类
  • 6、新建控制器,使用!读取配置的另一种方式来啦!
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档