惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Microsoft Security Blog
Microsoft Security Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
A
About on SuperTechFans
月光博客
月光博客
Jina AI
Jina AI
F
Fortinet All Blogs
博客园 - 聂微东
The Cloudflare Blog
美团技术团队
B
Blog RSS Feed
N
Netflix TechBlog - Medium
罗磊的独立博客
The GitHub Blog
The GitHub Blog
I
InfoQ
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Apple Machine Learning Research
Apple Machine Learning Research
H
Help Net Security
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
T
The Blog of Author Tim Ferriss
MyScale Blog
MyScale Blog
博客园 - 三生石上(FineUI控件)
宝玉的分享
宝玉的分享
阮一峰的网络日志
阮一峰的网络日志
V
V2EX

博客园 - 云飞扬IT

asp.net mvc 传参问题 在 ASP.NET Core 中使用 IHttpClientFactory 发出 HTTP 请求(官方文档) C# webapi 参数(AI) Error:(246, 5) error: resource android:attr/ttcIndex not found Android Gradle 插件版本与Gradle版本对应 flutter 水平Row示例 flutter Padding的用法 flutter解析json参考 java 三个类名 abstract extends implements flutter Vs code 快速创建2个状态的快捷代码 flutter分号还是逗号 flutter在线站点 windows 10 安装 sql 2005 安装失败 开发和常用工具推荐清单 ---转 ASP.NET MVC+EF框架+EasyUI实现权限管理系列(24)-权限组的设计和实现(附源码) ---转 【商业源码】生日大放送-Newlife商业源码分享 -转 我个人所有的独立博客wordpress都被挂马 .NET Web开发技术简单整理 转 程序员常用不常见很难得的地址大全转
C# IConfiguration 注入 理解(AI)
云飞扬IT · 2023-07-28 · via 博客园 - 云飞扬IT

在 C# 中,IConfiguration 是一个接口,用于在应用程序中管理配置数据。它是 .NET Core(现在称为 .NET 5+)和 ASP.NET Core 的一部分,用于轻松地读取和使用配置信息,例如数据库连接字符串、API密钥、日志设置等。

IConfiguration 接口是依赖注入的关键部分,它允许您将配置数据注入到您的应用程序中的其他组件中。通过依赖注入,您可以将 IConfiguration 实例传递给需要配置数据的类和服务,而不需要直接在每个地方读取配置文件或配置数据。

以下是关于 IConfiguration 注入的一般步骤:

配置文件:首先,您需要创建一个配置文件,比如 appsettings.json。在此文件中,您可以指定键值对,其中键表示配置项的名称,而值则表示配置项的值。例如:

json

{
"AppSettings": {
"ConnectionString": "Server=myserver;Database=mydb;User=myuser;Password=mypassword;",
"LogLevel": "Information"
}
}

注册 IConfiguration:在应用程序的启动时,需要将 IConfiguration 注册到依赖注入容器中。在 ASP.NET Core 中,通常在 Startup.cs 文件的 ConfigureServices 方法中进行注册:

csharp

using Microsoft.Extensions.Configuration;

// ...

public void ConfigureServices(IServiceCollection services)
{
IConfiguration configuration = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
.Build();

services.AddSingleton(configuration);
// 或者
// services.AddSingleton(configuration);
}

使用 IConfiguration:现在,您可以在需要配置数据的任何地方注入 IConfiguration。例如,假设您有一个名为 MyService 的服务需要使用连接字符串:

csharp

public class MyService
{
private readonly IConfiguration _configuration;

public MyService(IConfiguration configuration)
{
_configuration = configuration;
}

public void DoSomething()
{
string connectionString = _configuration["AppSettings:ConnectionString"];
// 使用连接字符串执行操作
}
}

在上面的示例中,通过构造函数注入 IConfiguration,MyService 类现在可以访问 appsettings.json 文件中的连接字符串。

总结:IConfiguration 注入是一种将配置数据轻松传递给应用程序组件的方法。它使得管理配置数据更加简单,并遵循依赖注入的最佳实践,使代码更具可测试性和可维护性。

在C#中,IConfiguration是.NET Core和ASP.NET Core中用于处理配置数据的接口。它允许您从各种配置源(例如JSON文件、环境变量、命令行参数等)中读取配置信息,并将这些配置信息注入到应用程序的各个组件中,例如服务、控制器、中间件等。

IConfiguration接口定义了一组方法,用于访问配置数据。最常用的方法包括:

GetSection(string key): 用于获取指定配置节的子配置节。
GetValue(string key): 用于获取配置的值,返回一个字符串。
Bind(object instance): 用于将配置绑定到一个POCO(Plain Old CLR Object)实例上。

使用IConfiguration接口时,首先需要将配置信息加载到应用程序中。这通常在Program.cs中完成,可以通过以下步骤实现:

csharp

using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Configuration.Json;

public class Program
{
public static void Main(string[] args)
{
IConfiguration configuration = new ConfigurationBuilder()
.AddJsonFile("appsettings.json") // 添加配置文件路径
.Build();

// 将configuration传递给创建WebHost的代码
}
}

上述代码中,我们通过ConfigurationBuilder来构建IConfiguration实例,并使用AddJsonFile方法指定了一个名为"appsettings.json"的配置文件。您可以根据需求使用其他配置源。

一旦您在应用程序中配置好IConfiguration实例,您可以在需要配置数据的地方使用依赖注入来获取它。例如,如果您在ASP.NET Core应用程序中使用依赖注入,您可以在Startup类的ConfigureServices方法中注册IConfiguration:

csharp

using Microsoft.Extensions.DependencyInjection;

public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
IConfiguration configuration = ... // 获取IConfiguration实例,这里可以通过构造函数注入

services.AddSingleton(configuration);
// 或者 services.AddSingleton(configuration);
// 或者 services.AddSingleton(typeof(IConfiguration), configuration);

// 添加其他服务和组件的注册
}
}

一旦您将IConfiguration实例注册为服务,您可以在应用程序的其他部分通过构造函数注入它:

csharp

using Microsoft.Extensions.Configuration;

public class MyService
{
private readonly IConfiguration _configuration;

public MyService(IConfiguration configuration)
{
_configuration = configuration;
}

public void SomeMethod()
{
// 使用 IConfiguration 获取配置数据
var settingValue = _configuration.GetValue("SomeKey");
// 或者您可以使用 GetSection 方法来获取更复杂的配置结构
var subSectionValue = _configuration.GetSection("Some:Sub:Key").Value;
}
}

通过依赖注入IConfiguration,您可以在整个应用程序中轻松访问配置数据,而无需直接从配置文件中读取或在代

码中硬编码配置值。这使得您的应用程序更加灵活和易于配置。