最近搜索了一下自定义Config文件,发现网上大部分帖子都是读写应用程序exe文件对应的.config文件,如下图,读取自定义的配置文件相关帖子很少。
在软件开发中,经常用到设置这样的功能,如果属性不多,用Json、XML 这样的来存储非常的麻烦,一个简单的存储,需要写一大堆东西,有可能还要写实体类才能使用,然后某个属性不用,要删除的地方就有好多个,这时候选择微软自带config文件无疑是最佳选择。
可以使用VS自带的添加功能,例如
当然也可以新建一个文本文档,然后改后缀名,再加入内容,都是一样的。
我在软件的根目录里新建了一个Config文件夹,就将配置文件放在这里面了
我们新建一个 Winform 项目,然后新建一个 ConfigHelper.cs 类
- using System.Configuration;
-
- namespace Utils
- {
- public class ConfigHelper
- {
- private string ConfigPath = string.Empty;
-
- /// <summary>
- /// 获取配置文件指定的Key
- /// </summary>
- /// <param name="key"></param>
- /// <returns></returns>
- public string GetConfigKey(string key)
- {
- Configuration ConfigurationInstance = ConfigurationManager.OpenMappedExeConfiguration(new ExeConfigurationFileMap()
- {
- ExeConfigFilename = ConfigPath
- }, ConfigurationUserLevel.None);
-
- if (ConfigurationInstance.AppSettings.Settings[key] != null)
- return ConfigurationInstance.AppSettings.Settings[key].Value;
- else
- return string.Empty;
- }
-
- /// <summary>
- /// 设置配置文件指定的Key,如果Key不存在则添加
- /// </summary>
- /// <param name="key"></param>
- /// <param name="vls"></param>
- /// <returns></returns>
- public bool SetConfigKey(string key, string vls)
- {
- try
- {
- Configuration ConfigurationInstance = ConfigurationManager.OpenMappedExeConfiguration(new ExeConfigurationFileMap()
- {
- ExeConfigFilename = ConfigPath
- }, ConfigurationUserLevel.None);
-
- if (ConfigurationInstance.AppSettings.Settings[key] != null)
- ConfigurationInstance.AppSettings.Settings[key].Value = vls;
- else
- ConfigurationInstance.AppSettings.Settings.Add(key, vls);
-
- ConfigurationInstance.Save(ConfigurationSaveMode.Modified);
- ConfigurationManager.RefreshSection("appSettings");
- return true;
- }
- catch
- {
- return false;
- }
- }
-
-
- public ConfigHelper(string configPath)
- {
- ConfigPath = configPath;
- }
- }
- }
Form1中我就添加了一个按钮,没有其他的控件,代码如下
- using System;
- using System.Windows.Forms;
- using Utils;
-
- namespace Test2
- {
- public partial class Form1 : Form
- {
- public Form1()
- {
- InitializeComponent();
- }
-
- private ConfigHelper ConfigHelpers = null;
-
- private void Form1_Load(object sender, EventArgs e)
- {
- string configPath = Application.StartupPath + "\\Config\\SystemInfo.config";
- ConfigHelpers = new ConfigHelper(configPath);
- }
-
- private void button1_Click(object sender, EventArgs e)
- {
- //读取Key
- //string value = ConfigHelpers.GetKey("COM1");
- //Console.WriteLine(value);
-
- //设置Key
- bool result = ConfigHelpers.SetConfigKey("游戏名", "XX信条");
-
- Console.WriteLine("执行完毕");
- }
- }
- }
读取Key
string value = ConfigHelpers.GetKey("COM1");
设置Key
bool result = ConfigHelpers.SetConfigKey("游戏名", "XX信条");
这里我用的是实例化进行读取,如果你有多少个配置文件,就实例化多少个类,然后调用读写,就这么简单。
如果这个帖子对你有用,欢迎 关注 + 点赞 + 留言,谢谢
end