最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

.net core中編輯json配置文件的方法

 更新時間:2021年06月19日 11:54:13   作者:赫山老妖  
今天給大家分享.net core中編輯json配置文件的方法,在項目設計中,需要在運行過程中,將遠程服務端發(fā)送過來的配置信息回寫到配置文件中,具體內(nèi)容詳情跟隨小編一起看看吧

引言

最近在具體項目開發(fā)應用中,項目采用的json格式配置文件,配置文件的加載采用的IConfiguration接口對象進行的管理,這是.net standard時代,微軟所提供的現(xiàn)代化的配置管理工具。

項目設計中,需要在運行過程中,將遠程服務端發(fā)送過來的配置信息回寫到配置文件中。然而,必應也好,百度也罷,翻遍網(wǎng)絡,這套現(xiàn)代化的配置管理模型中,卻找不到一個可以改變配置回寫的方法。

無奈之下,只好自己動手,手動造輪子了。

.NET Standard時代的配置模型

隨著.NET Standard時代的來臨,System.Configuration在.net core中已經(jīng)不存在了,那么取而代之的是Microsoft.Extensions.Configuration系列配置管理類庫:

Microsoft.Extensions.Configuration.Abstractions:基礎接口

Microsoft.Extensions.Configuration:實現(xiàn)上面的基礎接口

Microsoft.Extensions.Configuration.FileProviderExtensions:提供重載配置擴展

Microsoft.Extensions.Configuration.Binder:提供轉換到實體功能

Microsoft.Extensions.Configuration.FileExtensions:提供配置文件根路徑擴展

相關文章資源

關于以上類庫的使用,網(wǎng)上有大量相關文章,如知名博主大內(nèi)老A的文章中,有著系統(tǒng)、詳細闡述,各位可自行查閱。

鏈接在此:https://www.cnblogs.com/artech/p/config-for-net-core.html

配置類的建議用法

出于編程上的便利,我們通常不會直接利用ConfigurationBuilder創(chuàng)建的Configuration對象讀取某個單一配置項的值,而是傾向于將一組相關的配置綁定為一個對象。

例如筆者某個項目消息主題配置參數(shù)類如下:

public class TopicConfig
{
        public string Project { get; set; } ="ibms";
        public string Device { get; set; } = "gateway";
        public string City { get; set; } = "wuhan";
        public string Area { get; set; } = "poly";
}

我們可以為配置類指定默認參數(shù)。

在需要使用配置參數(shù)的對象中,我們可以將配置類設置為屬性字段

private TopicConfig topicConfig = new TopicConfig();

當對象類被實例化時,配置類將自動被構造并擁有默認配置參數(shù)

我們在需要使用配置的對象類中,寫一個加載配置類的方法和保存配置類的方法,當對象類構造時,調(diào)用并執(zhí)行加載配置文件。

當配置文件存在時,判斷對應的配置段是否存在,如果存在,則綁定到對應的配置類,從而實現(xiàn)配置參數(shù)的加載(對象類中,相關需要使用配置參數(shù)的地方,直接從配置類的獲取參數(shù));

當配置文件不存在時,加載配置方法調(diào)用保存配置方法,將默認配置回寫到配置文件中。

當配置參數(shù)動態(tài)更新后需要保存時,也通過調(diào)用保存配置方法,將配置參數(shù)更新到配置文件中。

示例json配置文件

{
    "topic": {
        "Project": "ibms",
        "Device": "gateway",
        "City": "wuhan",
        "Area": "poly"
    }
}

加載配置方法

筆者采用程序目錄下的"appsettings.json"文件作為配置文件

private void LoadConfig()
        {
            var path = Directory.GetCurrentDirectory();
            var config_file = "appsettings.json";
            var full_path = Path.Combine(path, config_file);
            if (File.Exists(full_path))
            {
                var builder = new ConfigurationBuilder()
                    .SetBasePath(path)
                    .AddJsonFile("appsettings.json");

                IConfiguration Configuration = builder.Build();

                if (Configuration.GetSection(Topic).Exists())//Topic為字符串常量,對應配置段屬性名稱
                    Configuration.GetSection(Topic).Bind(topicConfig);//綁定配置數(shù)據(jù)到配置類
            }
            else
            {
                SaveConfig();
            }
     }

在dotnet core由于采用了更為模塊化的設計方式,使用配置類需要引用相應的程序包,我們在程序中使用json配置,需要安裝Microsoft.Extensions.Configuration.Json程序包。

Bind方法為擴展方法,需要項目中先安裝Microsoft.Extensions.Configuration.Binder程序包。

程序包可通過Nuget包管理器進行安裝。

保存配置方法

private void SaveConfig(string path = "")
{
        if (path == "") path = Directory.GetCurrentDirectory();
        Dictionary<string, object> sectionsInfo = new Dictionary<string, object>();

        sectionsInfo.Add(Topic, topicConfig); //Topic為字符串常量,對應配置段屬性名稱
        JsonConfigHelper.SaveJson(sectionsInfo, path);
}

調(diào)用json配置保存類,將配置保存到指定的位置。

通用Json配置保存類

筆者針對需要改寫配置文件的應用的需要,自行實現(xiàn)了一個保存json格式配置文件的通用類,支持同時保存多個配置類。

支持對現(xiàn)有配置文件節(jié)點的改寫和追加配置節(jié)點。

using System;
using System.Collections.Generic;
using System.IO;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;

namespace flyfire.Common
{
    public class JsonConfigHelper
    {
        public static bool SaveJson(Dictionary<string,object> sectionInfo, string configFilePath, string configFileName = "appsettings.json")
        {
            if (sectionInfo.Count==0)
                return false;

            try
            {
                var filePath = Path.Combine(configFilePath, configFileName);
                JObject jsonObject;

                if (File.Exists(filePath))
                {
                    using (StreamReader file = new StreamReader(filePath))
                    {
                        using (JsonTextReader reader = new JsonTextReader(file))
                        {
                            jsonObject = (JObject)JToken.ReadFrom(reader);
                        }
                    }
                }
                else
                {
                    jsonObject = new JObject();
                }

                foreach (var key in sectionInfo.Keys)
                {
                    jsonObject[key] = JObject.FromObject(sectionInfo[key]);
                }

                using (var writer = new StreamWriter(filePath))
                using (JsonTextWriter jsonwriter = new JsonTextWriter(writer)
                {
                    Formatting = Formatting.Indented,//格式化縮進
                    Indentation = 4,  //縮進四個字符
                    IndentChar = ' '  //縮進的字符是空格
                })
                {
                    jsonObject.WriteTo(jsonwriter);
                    return true;
                }
            }
            catch (Exception)
            {
                return false;
            }
        }
    }
}

至此,我們完成了Json格式配置文件的加載、綁定與保存。

以上就是.net core中編輯json配置文件的詳細內(nèi)容,更多關于.net core json配置文件的資料請關注腳本之家其它相關文章!

相關文章

最新評論

睢宁县| 灌云县| 邹城市| 洞头县| 龙里县| 呼伦贝尔市| 乐安县| 普兰县| 霍林郭勒市| 鹤岗市| 枣庄市| 淮滨县| 松潘县| 鹤庆县| 合作市| 离岛区| 武安市| 昔阳县| 洪泽县| 女性| 右玉县| 扬中市| 东海县| 永靖县| 茌平县| 巫溪县| 铁力市| 靖宇县| SHOW| 浮梁县| 芜湖县| 无极县| 乌兰县| 晴隆县| 临邑县| 武义县| 南宫市| 将乐县| 新竹市| 乌审旗| 威信县|