c#读取配置文件方法
问题:在做c#项目开发的时候,如果有一些变量是我们后期需要维护或者改变的,像这样的变量我们就不能再开发的时候在代码中写死了,后期维护困难。
解决方法:一般来说,简单的方法就是将变量配置在配置文件中,方便后期维护。
那么问题来了,有时配置文件的路径地址等的不同,导致去配置文件经常读不到,在一些大公司,研发环境和测试环境部署不同时,配置文件的读取就更加不方便了,因此,给大家分享一下读取配置文件基本方法,基本类。代码如下;
举个简单的例子,比如你的配置文件名字是:FlightChangeAutomation.config
代码:
using System;
using System.Collections.Generic;
using System.Configuration;
using System.IO;
namespace Better517Na.FlightChangeAutomation.Factory
{
/// <summary>
/// 配置文件监听器类:监听配置文件变更
/// </summary>
public class ConfigMonitor
{
/// <summary>
/// 连接配置 Configuration
/// </summary>
private static Configuration flightChangeAutomationConfig = null;
/// <summary>
/// 连接配置文件 ExeConfigurationFileMap
/// </summary>
private static ExeConfigurationFileMap map = null;
/// <summary>
/// 构造函数:初始化读取配置文件,为文件注册侦听器
/// </summary>
static ConfigMonitor()
{
MonitorConfigFile();
InitConnectionConfig();
}
/// <summary>
/// 配置文件变更代理 delegate
/// </summary>
public delegate void EventHandlerAfterConfigModify();
/// <summary>
/// 配置文件变更事件 event
/// </summary>
public static event EventHandlerAfterConfigModify ConfigModifyInfoEvent;
/// <summary>
/// 配置对象 Configuration
/// </summary>
public static Configuration FlightChangeAutomationConfig
{
get
{
return flightChangeAutomationConfig;
}
set
{
flightChangeAutomationConfig = value;
}
}
/// <summary>
/// 创建配置文件发动监听器
/// </summary>
public static void MonitorConfigFile()
{
FileSystemWatcher fileWatcher = new FileSystemWatcher();
fileWatcher.Path = AppDomain.CurrentDomain.SetupInformation.ApplicationBase + "\\";
fileWatcher.Filter = "FlightChangeAutomation.config";
fileWatcher.NotifyFilter = NotifyFilters.CreationTime | NotifyFilters.LastWrite | NotifyFilters.FileName;
// Add event handlers.
fileWatcher.Changed += new FileSystemEventHandler(OnChanged);
fileWatcher.Created += new FileSystemEventHandler(OnChanged);
fileWatcher.Deleted += new FileSystemEventHandler(OnChanged);
fileWatcher.Renamed += new RenamedEventHandler(OnChanged);
// Begin watching.
fileWatcher.EnableRaisingEvents = true;
}
/// <summary>
/// 向订阅者发布信息(配置文件变更时)
/// </summary>
private static void RaiseEvent()
{
if (ConfigModifyInfoEvent != null)
{
ConfigModifyInfoEvent();
}
}
/// <summary>
/// 初始化数据库连接配置
/// </summary>
private static void InitConnectionConfig()
{
// 读取配置文件进行所有的连接初始化操作
map = new ExeConfigurationFileMap();
map.ExeConfigFilename = AppDomain.CurrentDomain.SetupInformation.ApplicationBase + "\\FlightChangeAutomation.config"; ////(配置文件名字)
flightChangeAutomationConfig = ConfigurationManager.OpenMappedExeConfiguration(map, ConfigurationUserLevel.None);
}
/// <summary>
/// 文件改变:重新加载配置
/// </summary>
/// <param name="source">事件源 object</param>
/// <param name="e">事件参数 FileSystemEventArgs</param>
private static void OnChanged(object source, FileSystemEventArgs e)
{
InitConnectionConfig();
RaiseEvent();
}
}
}
以上类就可以实现对配置文件的读取。
读取方法:
ConfigMonitor.FlightChangeAutomationConfig.AppSettings.Settings[note] (note就是配置文件的key)
ConfigMonitor.FlightChangeAutomationConfig.AppSettings.Settings[note].Value.ToString();
配置文件格式为:
<add key="UpdateStatusSpanDeptID" value="17111"/>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示