在我們日常專案開發中,操作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;}
專案地址
更多開源專案請檢視:一個專注推薦優秀.Net開源專案的榜單
- End -
文章首發於公眾號【程式設計樂趣】,歡迎大家關注。