C#架构设计-程序运行时从xml配置文件中加载配置项并设置为全局变量
場景
C#中全局作用域的常量、字段、屬性、方法的定義與使用:
https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/102550025
在上面使用的全局作用域的類的基礎上,如果某些設置需要存儲在某個xml配置文件中,然后在程序啟動后從配置文件中加載到全局的變量中并使用。
比如:
在磁盤下某目錄中有一個xml配置文件FileSaveCfg.xml
<?xml version="1.0" encoding="utf-8"?> <FileSaveCfg><PreExportDataThreshold>500000</PreExportDataThreshold></FileSaveCfg>那么需要在程序運行后就加載這個配置文件并獲取500000這個配置項,然后我
就可以在程序的任意地方通過全局變量去獲取這個500000配置項了。
注:
博客主頁:
https://blog.csdn.net/badao_liumang_qizhi
關注公眾號
霸道的程序猿
獲取編程相關電子書、教程推送與免費下載。
實現(xiàn)
為了實現(xiàn)程序運行后就加載配置文件的內(nèi)容,打開項目下的Program.cs
?
然后在其Main方法中調(diào)用加載配置文件的配置項的方法,這里將此方法直接放在全局Global類中,參照上面的博客新建一個全局Global類,類中新建Init方法,然后在上面的Main方法中調(diào)用Init方法
??? class Program{/// <summary>/// 應用程序的主入口點。/// </summary>[STAThread]static void Main(string[] args){Global.Instance.Init();}}然后來到Init方法中
??????? try{if (System.IO.File.Exists("d:\FileSaveCfg.xml")){System.Xml.XmlNode node = null;string strValue = String.Empty;System.Xml.XmlDocument doc = new System.Xml.XmlDocument();doc.Load(AppConfig.TestDataDirConfigFile);node = doc.SelectSingleNode("./FileSaveCfg/PreExportDataThreshold");if (node != null && node.FirstChild != null){try{if (XmlHelper.GetFirstChildNodeValue(node, true, out strValue)){int.TryParse(strValue, out Global._instance._preExportDataThreshold);}}catch (Exception ex){Console.Write("從配置文件{0}中解析PreExportDataThreshold異常:" + ex.Message);}}else{Console.Write("從配置文件{0}中不包含F(xiàn)ileSaveCfg/PreExportDataThreshold節(jié)點!");}}}catch (Exception ex){Console.Write("從實驗目錄所在配置文件中解析實驗目錄異常:" + ex.Message);}其中用到的獲取配置文件中節(jié)點的值調(diào)用了一個工具類中的方法GetFirstChildNodeValue代碼如下:
??????? public static bool GetFirstChildNodeValue(System.Xml.XmlNode node, bool throwException, out string value){value = string.Empty;try{value = node.FirstChild.Value.ToString();}catch (Exception ex){if (throwException){throw (ex);}return false;}return true;}其中通過
int.TryParse(strValue, out Global._instance._preExportDataThreshold);將從配置文件中加載數(shù)據(jù)將其賦值給全局字段
Global._instance._preExportDataThreshold在Global中定義全局私有字段
private int _preExportDataThreshold = 500000;并且設置了一個默認值
然后再在Global中添加一個public的屬性,用來對私有的屬性進行讀取
??????? public int PreExportDataThreshold{get { return _preExportDataThreshold; }set { _preExportDataThreshold = value; }}然后就可以在程序的任何地方通過
Global.Instance.PreExportDataThreshold來使用從配置文件中獲取的這個配置項了。
比如:
?if (recordDataList.Count > Global.Instance.PreExportDataThreshold )?
?
?
?
總結
以上是生活随笔為你收集整理的C#架构设计-程序运行时从xml配置文件中加载配置项并设置为全局变量的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C#中使用MoveTo和Path.Cha
- 下一篇: C#中通过list的GetRange方法