一個.Net簡單、易用的組態檔操作庫

2023-04-04 15:01:50

在我們日常專案開發中,操作INI/CFG組態檔,往往會通過呼叫WinAPI來實現,WinAPI介面引數只支援字串,而我們專案中,往往資料型別是多種多樣的,在儲存和獲取設定值,我們就要進行型別的轉換。

今天給大家推薦一個操作庫,這個庫就可以解決我們的問題。

專案簡介

這是一個基於.Net開發的簡單、易用的CFG/INI設定操作庫,可以用文字或二進位制格式讀取、修改和儲存組態檔和流,該庫與.NET、.NET Core和Mono Framework完全相容。

技術架構

跨平臺:這是基於.Netstandard2.0開發的系統,可以部署在Docker,Windows,Linux,Mac。

專案結構

SharpConfig:設定庫操作專案,Example:使用範例。

使用方法

檔案載入

Configuration.LoadFromFile("myConfig.cfg");        // 檔案
Configuration.LoadFromStream(myStream);            // 文字流
Configuration.LoadFromString(myString);            // 文字
Configuration.LoadFromBinaryFile("myConfig.cfg");  // 二進位制
Configuration.LoadFromBinaryStream(myStream);      // 二進位制流

檔案儲存

myConfig.SaveToFile("myConfig.cfg");        // 檔案
myConfig.SaveToStream(myStream);            // 檔案流
myConfig.SaveToBinaryFile("myConfig.cfg");  // 二進位制檔案
myConfig.SaveToBinaryStream(myStream);      // 二進位制流

使用方法

var cfg = new Configuration();

cfg["SomeStructure"]["SomeString"].StringValue = "foobar";
cfg["SomeStructure"]["SomeInt"].IntValue = 2000;
cfg["SomeStructure"]["SomeInts"].IntValueArray = new[] { 1, 2, 3 };
cfg["SomeStructure"]["SomeDate"].DateTimeValue = DateTime.Now;

cfg.SaveToFile(filename);

物件操作

var cfg = new Configuration();
//物件.
var p = new SomeClass    
{      
    SomeString = "foobar",      
    SomeInt = 2000,      
    SomeInts = new[] { 1, 2, 3 },      
    SomeDate = DateTime.Now    
};
//設定
cfg.Add(Section.FromObject("SomeStructure", p));

陣列操作

var cfg = new Configuration();cfg["GeneralSection"]["SomeInts"].IntValueArray = new[] { 1, 2, 3 };
// 獲取陣列型別值
int[] someIntValuesBack = cfg["GeneralSection"]["SomeInts"].GetValueArray<int>();
float[] sameValuesButFloats = cfg["GeneralSection"]["SomeInts"].GetValueArray<float>();
string[] sameValuesButStrings = cfg["GeneralSection"]["SomeInts"].GetValueArray<string>();
// 獲取陣列物件
object[] sameValuesButObjects = cfg["GeneralSection"]["SomeInts"].GetValueArray(typeof(int));

組態檔註釋

//獲取包含所有有效註釋分隔字元的陣列。當前值為{「#」,「;」}。
Configuration.ValidCommentChars{get;}
//獲取或設定儲存設定時的首選註釋字元。預設值為「#」。
Configuration.PreferredCommentChar{get;set;}
//獲取或設定設定的陣列元素分隔符。預設值為「,」。
Configuration.ArrayElementSeparator{get;set;}
//獲取或設定一個值,該值指示在分析設定時是否應忽略內聯註釋。
bool Configuration.IgnoreInlineComments{get;set;}
//獲取或設定一個值,該值指示在分析設定時是否應忽略前置註釋。
bool Configuration.IgnorePreComments{get;set;}
//獲取或設定一個值,該值指示在建立設定時是否應新增等號之間的空格。
bool Configuration.SpaceBetweenEquals{get;set;}
//獲取或設定一個值,該值指示字串值是否不帶引號,但包括其間的所有內容
bool Configuration.OutputRawStringValues{get;set;}

專案地址

https://github.com/cemdervis/sharpconfig

更多開源專案請檢視一個專注推薦優秀.Net開源專案的榜單

- End -

文章首發於公眾號【程式設計樂趣】,歡迎大家關注。