c#讀取配置文件方法

問題:在作c#項目開發的時候,若是有一些變量是咱們後期須要維護或者改變的,像這樣的變量咱們就不能再開發的時候在代碼中寫死了,後期維護困難。數據庫

解決方法:通常來講,簡單的方法就是將變量配置在配置文件中,方便後期維護。c#

那麼問題來了,有時配置文件的路徑地址等的不一樣,致使去配置文件常常讀不到,在一些大公司,研發環境和測試環境部署不一樣時,配置文件的讀取就更加不方便了,所以,給你們分享一下讀取配置文件基本方法,基本類。代碼以下;app

舉個簡單的例子,好比你的配置文件名字是:FlightChangeAutomation.config函數

代碼:測試

 

using System;
using System.Collections.Generic;
using System.Configuration;
using System.IO;spa

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;orm

/// <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"/>

相關文章
相關標籤/搜索