亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

.NET?Core中配置Configuration實戰(zhàn)教程

 更新時間:2025年04月25日 09:22:53   作者:caoruipeng  
這篇文章主要介紹了.NET?Core中的配置Configuration實戰(zhàn),本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧

在前面的一篇文章中,我們對.NET 中的配置Configuration進行了一個詳細的介紹,并且從整個源碼的解讀解釋了配置中的核心接口以及主要的實現(xiàn)類。文章鏈接為:http://chabaoo.cn/aspnet/340345sy9.htm。這篇文章我們主要來介紹每種配置如何使用。

基于內(nèi)存的配置程序

基于內(nèi)存的配置程序主要是在內(nèi)存中維護了一個Key-Value鍵值對。

static void MemoryConfig()
{
    List<KeyValuePair<string, string?>>? initialData = new List<KeyValuePair<string, string?>>();
    initialData.Add(new KeyValuePair<string, string?>("name", "tom"));
    IConfigurationRoot configuration = new ConfigurationBuilder()
        .AddInMemoryCollection(initialData)
        .Build();
    Console.WriteLine("name:" + configuration["name"]);
}

調(diào)用如下:

static void Main(string[] args)
{
    MemoryConfig();
}

基于現(xiàn)有的配置提供程序

這個配置提供程序用的相對較少,是微軟在Microsoft.Extensions.Configuration類庫中默認實現(xiàn)的一個配置提供程序,它可以把已經(jīng)存在的配置IConfigurationRoot封裝成一個配置提供程序。如果需要對針對現(xiàn)有配置快速Copy出一個新配置的話,可以使用這個配置提供程序。

static void ChainedConfig()
{
    List<KeyValuePair<string, string?>>? initialData = new List<KeyValuePair<string, string?>>();
    initialData.Add(new KeyValuePair<string, string?>("name", "tom"));
	//初始化一個已有的配置
    IConfigurationRoot configuration = new ConfigurationBuilder()
        .AddInMemoryCollection(initialData)
        .Build();
	//基于已有的配置,重新生成一個一模一樣的配置。
    IConfigurationRoot newConfiguration = new ConfigurationBuilder()
        .AddConfiguration(configuration)
        .Build();
    Console.WriteLine("name:" + configuration["name"]);
}

基于命令行的配置提供程序

基于命令行的配置程序,可以從控制臺的命令行獲取配置,這個配置提供程序可以快速將命令行參數(shù)分解成Key-Value鍵值對。而不需要我們自己手動對字符串進行處理(一般我們會按照空格拆分成數(shù)組,然后按照等號獲取到鍵和值)

//基于命令行的配置
static void CommandLineConfig()
{
    IConfigurationRoot configuration = new ConfigurationBuilder()
        .AddCommandLine(["name=tom","age=32"])
        .Build();
    Console.WriteLine("name:" + configuration["name"]);

基于環(huán)境變量的配置提供程序

.NET可以讀取環(huán)境變量中的Key-Value鍵值對,并且可以過濾到指定的前綴來篩選。下面代碼中,程序?qū)虞d環(huán)境變量中以TEST_開頭的所有變量到配置中,我們在系統(tǒng)變量中,新增一個TEST_Name的變量,一定要重啟一下計算機,否則新增的環(huán)境變量不會生效。然后我們的程序就可以讀取到TEST_Name的變量值

static void EnvironmentConfig()
{
    IConfigurationRoot configuration = new ConfigurationBuilder()
        .AddEnvironmentVariables("Test_")
        .Build();
    Console.WriteLine("name:" + configuration["Name"]);
}

基于Json文件的配置提供程序

基于json的配置文件是我們最常用的配置文件格式了,.NET提供了標準的json配置提供程序,我們使用一下代碼從一個app.json文件中加載配置,并且app.json被修改的時候,程序中的配置也會被更新。

//基于Json文件的配置
static void AddJsonFileConfig()
{
    IConfiguration configuration = new ConfigurationBuilder()
        .AddJsonFile("app.json", optional: true, reloadOnChange: true)
        .Build();
    Console.WriteLine("name:" + configuration["name"]);
}

app.json的配置文件內(nèi)容如下:

{
	"person":
	{
		"name":"caoruipeng",
		"age":12,
		"school":"北京大學"
	},
	"name":"tom11"
}

基于XML文件的配置提供程序

基于XML的配置文件也是我們比較常用的配置文件格式了,.NET提供了標準的XML配置提供程序,我們使用一下代碼從一個app.xml文件中加載配置,并且app.xml被修改的時候,程序中的配置也會被更新。

//基于XML文件的配置
static void AddXmlFileConfig()
{
    IConfiguration configuration = new ConfigurationBuilder()
        .AddXmlFile("app.xml", optional: true, reloadOnChange: true)
        .Build();
    Console.WriteLine("name:" + configuration["name"]);
}

app.xml的配置文件內(nèi)容如下:

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<config>
	<name>tom</name>
	<age>21</age>
	<school>beijing</school>
</config>

基于Ini文件的配置提供程序

Ini配置文件平時 我們使用的比較少,不過微軟還是幫我們提供了基于Ini文件的配置提供程序。

//基于INI文件的配置
static void AddIniFileConfig()
{
    IConfiguration configuration = new ConfigurationBuilder()
        .AddIniFile("app.ini", optional: true, reloadOnChange: true)
        .Build();
    Console.WriteLine("name:" + configuration["person:name"]);
}

app.ini文件的內(nèi)容如下:

[person]
name=tom
age=27

自定義配置提供程序

官方提供的配置提供程序基本上可以滿足我們的絕大部分需求,但是如果我們的配置存儲在注冊表中、存儲在數(shù)據(jù)庫中,這個時候官方的配置提供程序就無法滿足我們的要求,我們就需要自定義配置提供程序。自定義配置提供程序很簡單,主要包括兩個類:自定義配置源IConfigurationSource、自定義配置提供程序ConfigurationProvider以及一個針對當前配置的擴展方法。下面代碼,我們模擬一個基于數(shù)據(jù)庫的配置提供程序,負責從數(shù)據(jù)庫的配置表Config表中讀取配置。當然案例代碼,我們并不是真正的去讀取數(shù)據(jù)庫的表,大家可以自行完善代碼。

//自定義配置源
public class DataBaseConfigurationSource : IConfigurationSource
{
    public IConfigurationProvider Build(IConfigurationBuilder builder)
    {
        return new DataBaseConfigurationProvider();
    }
}
//自定義配置提供程序
public class DataBaseConfigurationProvider : ConfigurationProvider
{
    public override void Load()
    {
        base.Load();
        //讀取數(shù)據(jù)庫配置
    }
}
//數(shù)據(jù)庫配置程序的擴展方法
public static class DataBaseConfigurationExtensions
{
    public static IConfigurationBuilder AddDb(this IConfigurationBuilder configurationBuilder)
    {
        configurationBuilder.Sources.Add(new DataBaseConfigurationSource());
        return configurationBuilder;
    }
}
//調(diào)用案例
static void Main(string[] args)
{
    var builder = new ConfigurationBuilder()
    .AddDb()
    .Build();
    var value = builder["key"];
}

到此這篇關(guān)于.NET Core中的配置Configuration實戰(zhàn)的文章就介紹到這了,更多相關(guān).NET Core配置Configuration內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論