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
关注公众号
霸道的程序猿
获取编程相关电子书、教程推送与免费下载。
实现
为了实现程序运行后就加载配置文件的内容,打开项目下的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 )
C#架构设计-程序运行时从xml配置文件中加载配置项并设置为全局变量相关推荐
- css文件无法应用,无法在dash应用程序中加载静态css文件
我已经构建了一个单页的dash应用程序,当作为单个文件运行时,它可以按预期运行,但是当我试图将它作为一个完整的应用程序运行时,CSS无法正确加载.在 下面是我的文件夹结构 当我通过manage.py加 ...
- 《Spring源码深度解析 郝佳 第2版》容器的基本实现与XML文件的加载
目录 Spring的整体架构 容器的基本实现与XML文件的加载 一.Spring的整体架构 Spring是一个分层架构,主要包含以下部分 Core Container Data Access Web ...
- 用安卓虚拟机运行程序时程序停止_程序运行时Trace:DynamoRIO Tool
1. 程序运行时Trace,DynamoRIO 最近在做一个trace程序执行路径的项目,了解到DynamoRIO Dynamic Instrumentation Tool Platform 可以实现 ...
- MySQL异步复制延迟解决的架构设计与运维架构ppt
<MySQL异步复制延迟解决的架构设计与运维架构ppt> 下载地址:网盘下载 转载于:https://www.cnblogs.com/long12365/p/9731216.html
- 云原生应用程序运行时 Kyma 的主要特性介绍
Kyma 是一个应用程序运行时,提供了一种在 Kubernetes 的云原生世界中连接.扩展和自定义应用程序的灵活且简单的方法. Kyma 开箱即用,提供各种功能,例如: 以经济高效和可扩展的方式运行 ...
- 云原生应用程序运行时 Kyma 简介
「这是我参与2022首次更文挑战的第40天,活动详情查看:2022首次更文挑战」 Kyma 读音 kee-ma 是一个云原生应用程序运行时,它将 Kubernetes 的强大功能与一组一流的工具和开源 ...
- java 找不到符号 con_我的java程序运行时,提示找不到符号,求解!
我的java程序运行时,提示找不到符号,求解! 关注:163 答案:4 mip版 解决时间 2021-02-07 23:57 提问者人潮拥挤你不在 2021-02-06 23:57 import ...
- java程序运行时,数据的存储地!
程序运行时,我们最好对数据保存到什么地方做到心中有数.特别要注意的是内存的分配.有六个地方都可以保存数据: (1)寄存器.这是最快的保存区域,因为它位于和其他所有保存方式不同的地方:处理器内部.然而, ...
- 解决IntelliJ IDEA控制台乱码问题[包含程序运行时的log4j日志以及tomcat日志乱码]
解决IntelliJ IDEA控制台乱码问题[包含程序运行时的log4j日志以及tomcat日志乱码] 参考文章: (1)解决IntelliJ IDEA控制台乱码问题[包含程序运行时的log4j日志以 ...
最新文章
- 被人举报,经查属实!985高校公告:撤销其博士学位
- Facebook人工智能副总裁:AI 这一领域很快就会「碰壁」
- 机器学习系列16:机器学习系统设计
- 2015-09-14-初级vector
- 陈顺志 php,芦芽山之情
- 程序员做到年薪60万也不去炫富,背后原因曝光,麻烦做个人吧
- 利用iptabls的NFLOG记录自己的HTTP HTTPS上网行为
- linux如何实现c语言程序,在Linux下如何利用C语言来实现一个Sniffer
- 新能源汽车行业资讯-2022-9-16
- Java进阶架构实战——Redis在京东到家的订单中的使用
- 杨辉三角形算法php实现,PHP实现杨辉三角形
- C++之我见--delete指针
- agv系统介绍_AGV智能小车控制系统介绍
- Quartus II 18.1的下载安装和注册
- python多个strip_python 中strip方法
- 莱芜和莱西、莱阳、莱州有什么关系?
- php实现下载download
- 分享微信公众号运营助手,可以在手机上回复粉丝留言
- 一张图遍历中外历史事件、科学发明、哲学思想对照表
- 使用格式工厂给视频添加背景音乐
热门文章
- PAT甲级题目翻译+答案 AcWing(字符串处理)
- jersey tomcat MySQL_tomcat web容器中,调用jersey client端报错的处理
- mybatis文档笔记
- 你对Java网络编程了解的如何?Java NIO 网络编程 | Netty前期知识(二)
- MySQL锁机制(myisam表所与innoDB锁)
- php在双引号中输出变量要加大括号,php中输出变量加大括号{}作用_PHP教程
- 怎么通过id渲染页面_「快页面」动态配置化页面渲染器原理介绍
- ext3分区修复linux,linux – 如何从损坏的ext3分区恢复数据?
- eclipse导入github项目提示没有发现项目_eclipse clone克隆github远程库工程到本地
- nginx修改监听端口号8080_Nginx + Tomcat 配置