• 使用自定义XML配置文件在.NET桌面程序中保存设置


    本文将详细介绍如何在.NET桌面程序中使用自定义的XML配置文件来保存和读取设置。除了XML之外,我们还将探讨其他常见的配置文件格式,如JSON、INI和YAML,以及它们的优缺点和相关的NuGet类库。最后,我们将重点介绍我们为何选择XML作为配置文件格式,并展示一个实用的示例。

    1. 背景

    在.NET桌面程序中,通常使用setting文件来保存程序的配置信息。使用setting文件的方法很简单,只需在项目中添加一个setting文件,然后通过Properties.Settings.Default来获取和保存设置即可。

    我的开源项目 HackerScreenSaver 之前就是使用这种方式,但是当我在升级 Windows11 的内核版本后,发现当程序在被系统以屏保程序启动后,无法加载配置了。

    如此这般就需要使用其他方式来存储配置文件了。毕竟,setting文件并非唯一可用于保存设置的方式。我们可以选择存储到注册表,或者自己写配置文件并保存。

    2. 常见的配置文件格式

    对于一些简单的配置我们甚至可以直接写一个二进制文件,当然一般情况下我们还是选择常见格式的配置文件,比如:JSON、INI 和 YAML。

    1. JSON(JavaScript Object Notation) 格式
      • 优点:易于阅读和编写,支持复杂的数据结构,广泛应用于Web API和前端开发。
      • 缺点:根据 JSON 规范,其是不支持注释的(单独 Json 文件在某些编辑器可以正确解析注释,在 .NET Core 中通过 JSON 配置提供程序读取配置时,也可以在配置文件中添加注释)。
      • 相关类库:Newtonsoft.Json(建议使用自带的 System.Text.Json)迁移可参考相关教程
    2. INI(Initialization File)
      • 优点:简洁,易于阅读和编辑,适用于存储简单的键值对。
      • 缺点:不支持复杂的数据结构和类型。
      • 相关类库:ini-parser
    3. YAML(Yet Another Markup Language)
      • 优点:简洁,易于阅读和编辑,支持复杂的数据结构,支持注释。
      • 缺点:缩进敏感,可能导致错误。
      • 相关类库:YamlDotNet

    3. HackerScreenSaver 的配置选择

    HackerScreenSaver 为了设计的小巧,根据合适原则和简单原则,我最终选择了不需要引入其他第三方的 XML 格式配置文件。

    XML(eXtensible Markup Language)具有以下优点:

    • 可扩展性强,支持复杂的数据结构。
    • 支持注释,便于理解和维护。
    • 作为标准的数据交换格式,易于与其他系统集成。

    以下是我们设计的一个简单的配置类 SimpleSetting,用于保存设置:

    public class SimpleSetting
    {
        // 类的属性和构造函数省略...
    
        /// 
        /// 从文件中读取设置
        /// 
        /// 配置文件路径
        public SimpleSetting(string path)
        {
            System.Xml.Serialization.XmlSerializer xs = new System.Xml.Serialization.XmlSerializer(typeof(SimpleSetting));
            using (System.IO.FileStream fs = new System.IO.FileStream(path, System.IO.FileMode.Open))
            {
                SimpleSetting ss = (SimpleSetting)xs.Deserialize(fs);
                isLocal = ss.isLocal;
                uInfo = ss.uInfo;
                Opacity = ss.Opacity;
                autoExit = ss.autoExit;
            }
        }
    
        /// 
        /// 保存设置到文件
        /// 
        /// 配置文件路径
        public void Save(string path)
        {
            System.Xml.Serialization.XmlSerializer xs = new System.Xml.Serialization.XmlSerializer(typeof(SimpleSetting));
            using (System.IO.FileStream fs = new System.IO.FileStream(path, System.IO.FileMode.Create))
            {
                xs.Serialize(fs, this);
            }
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34

    SimpleSetting 类中包含了从XML文件中读取设置和将设置保存到XML文件的方法。为了使用该类,我们只需要在程序中创建一个 SimpleSetting 对象,然后调用其 SaveLoad 方法即可。这样,我们就可以在.NET桌面程序中使用自定义的XML配置文件来保存设置了。

    4. 最后

    本文详细介绍了如何在.NET桌面程序中使用自定义的 XML 配置文件以及为何选择 XML 作为配置文件格式。同时,我们还探讨了其他常见的配置文件格式,如 JSON、INI 和 YAML,以及它们的优缺点和相关的 NuGet 类库。希望这篇文章能帮助你找到适合你项目需求的配置文件解决方案!

  • 相关阅读:
    linux下动静态库的制作,打包,以及模拟第三方库使用
    DAY48
    【【c语言康复训练-1】】
    【电路笔记】-脉冲宽度调制(PWM)与电机转速控制
    NeuN抗体丨SYSY NeuN抗体说明书及相关研究工具
    APP上架需要的准备和流程
    ROS 文件系统
    传道授业20年,这是一个老网工的初心
    全球领先飞瞳引擎™云服务全球两千+企业用户,集装箱识别集装箱箱况残损检测,正常箱号识别率99.98%以上,箱信息识别及铅封识别免费
    【ES6知识】Generator 函数 与 yield 关键字
  • 原文地址:https://blog.csdn.net/marin1993/article/details/132850473