场景
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
关注公众号
霸道的程序猿
获取编程相关电子书、教程推送与免费下载。
实现
为了实现程序运行后就加载配置文件的内容,打开项目下的Program.cs
然后在其Main方法中调用加载配置文件的配置项的方法,这里将此方法直接放在全局Global类中,参照上面的博客新建一个全局Global类,类中新建Init方法,然后在上面的Main方法中调用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}中不包含FileSaveCfg/PreExportDataThreshold节点!");
}
}
}
catch (Exception ex)
{
Console.Write("从实验目录所在配置文件中解析实验目录异常:" + ex.Message);
}
其中用到的获取配置文件中节点的值调用了一个工具类中的方法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);
将从配置文件中加载数据将其赋值给全局字段
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 )