场景

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配置文件中加载配置项并设置为全局变量相关推荐

  1. css文件无法应用,无法在dash应用程序中加载静态css文件

    我已经构建了一个单页的dash应用程序,当作为单个文件运行时,它可以按预期运行,但是当我试图将它作为一个完整的应用程序运行时,CSS无法正确加载.在 下面是我的文件夹结构 当我通过manage.py加 ...

  2. 《Spring源码深度解析 郝佳 第2版》容器的基本实现与XML文件的加载

    目录 Spring的整体架构 容器的基本实现与XML文件的加载 一.Spring的整体架构 Spring是一个分层架构,主要包含以下部分 Core Container Data Access Web ...

  3. 用安卓虚拟机运行程序时程序停止_程序运行时Trace:DynamoRIO Tool

    1. 程序运行时Trace,DynamoRIO 最近在做一个trace程序执行路径的项目,了解到DynamoRIO Dynamic Instrumentation Tool Platform 可以实现 ...

  4. MySQL异步复制延迟解决的架构设计与运维架构ppt

    <MySQL异步复制延迟解决的架构设计与运维架构ppt> 下载地址:网盘下载 转载于:https://www.cnblogs.com/long12365/p/9731216.html

  5. 云原生应用程序运行时 Kyma 的主要特性介绍

    Kyma 是一个应用程序运行时,提供了一种在 Kubernetes 的云原生世界中连接.扩展和自定义应用程序的灵活且简单的方法. Kyma 开箱即用,提供各种功能,例如: 以经济高效和可扩展的方式运行 ...

  6. 云原生应用程序运行时 Kyma 简介

    「这是我参与2022首次更文挑战的第40天,活动详情查看:2022首次更文挑战」 Kyma 读音 kee-ma 是一个云原生应用程序运行时,它将 Kubernetes 的强大功能与一组一流的工具和开源 ...

  7. java 找不到符号 con_我的java程序运行时,提示找不到符号,求解!

    我的java程序运行时,提示找不到符号,求解! 关注:163  答案:4  mip版 解决时间 2021-02-07 23:57 提问者人潮拥挤你不在 2021-02-06 23:57 import ...

  8. java程序运行时,数据的存储地!

    程序运行时,我们最好对数据保存到什么地方做到心中有数.特别要注意的是内存的分配.有六个地方都可以保存数据: (1)寄存器.这是最快的保存区域,因为它位于和其他所有保存方式不同的地方:处理器内部.然而, ...

  9. 解决IntelliJ IDEA控制台乱码问题[包含程序运行时的log4j日志以及tomcat日志乱码]

    解决IntelliJ IDEA控制台乱码问题[包含程序运行时的log4j日志以及tomcat日志乱码] 参考文章: (1)解决IntelliJ IDEA控制台乱码问题[包含程序运行时的log4j日志以 ...

最新文章

  1. 被人举报,经查属实!985高校公告:撤销其博士学位
  2. Facebook人工智能副总裁:AI 这一领域很快就会「碰壁」
  3. 机器学习系列16:机器学习系统设计
  4. 2015-09-14-初级vector
  5. 陈顺志 php,芦芽山之情
  6. 程序员做到年薪60万也不去炫富,背后原因曝光,麻烦做个人吧
  7. 利用iptabls的NFLOG记录自己的HTTP HTTPS上网行为
  8. linux如何实现c语言程序,在Linux下如何利用C语言来实现一个Sniffer
  9. 新能源汽车行业资讯-2022-9-16
  10. Java进阶架构实战——Redis在京东到家的订单中的使用
  11. 杨辉三角形算法php实现,PHP实现杨辉三角形
  12. C++之我见--delete指针
  13. agv系统介绍_AGV智能小车控制系统介绍
  14. Quartus II 18.1的下载安装和注册
  15. python多个strip_python 中strip方法
  16. 莱芜和莱西、莱阳、莱州有什么关系?
  17. php实现下载download
  18. 分享微信公众号运营助手,可以在手机上回复粉丝留言
  19. 一张图遍历中外历史事件、科学发明、哲学思想对照表
  20. 使用格式工厂给视频添加背景音乐

热门文章

  1. PAT甲级题目翻译+答案 AcWing(字符串处理)
  2. jersey tomcat MySQL_tomcat web容器中,调用jersey client端报错的处理
  3. mybatis文档笔记
  4. 你对Java网络编程了解的如何?Java NIO 网络编程 | Netty前期知识(二)
  5. MySQL锁机制(myisam表所与innoDB锁)
  6. php在双引号中输出变量要加大括号,php中输出变量加大括号{}作用_PHP教程
  7. 怎么通过id渲染页面_「快页面」动态配置化页面渲染器原理介绍
  8. ext3分区修复linux,linux – 如何从损坏的ext3分区恢复数据?
  9. eclipse导入github项目提示没有发现项目_eclipse clone克隆github远程库工程到本地
  10. nginx修改监听端口号8080_Nginx + Tomcat 配置