Jack bafbaedc52 chore(build): 更新项目目标框架至 .NET 10.0
- 将 JackCraft.Config 项目的目标框架从 net9.0 更新为 net10.0
- 将 Test 项目的目标框架从 net9.0 更新为 net10.0
- 格式化解决方案文件中的 XML 结构以提高可读性
2026-01-18 21:52:32 +08:00
2025-01-21 16:21:28 +08:00

JackCraft.Config

一个自己觉得怎么好用怎么写的配置文件库

使用方法

获取配置文件

配置文件不存在时会自动创建一个空 Json 文件,但是若配置文件不是 Json 标准格式将会在写入和读取键值时抛出异常

// 标准示例: var config = new Config(new FileInfo(配置文件路径));
var config = new Config(new FileInfo("./config.json"));
// 定义自定义读取方法
Config.ConfigReader customReader = (filePath) => {
    Console.WriteLine($"正在读取文件: {filePath}");
    if (File.Exists(filePath))
    {
        var content = File.ReadAllText(filePath);
        Console.WriteLine($"文件内容: {content}");
        return content;
    }
    return "{}";
};

// 定义自定义保存方法
Config.ConfigWriter customWriter = (filePath, content) => {
    Console.WriteLine($"正在保存到文件: {filePath}");
    
    // 创建备份
    if (File.Exists(filePath))
    {
        var backupPath = filePath + ".backup";
        File.Copy(filePath, backupPath, true);
        Console.WriteLine($"已创建备份: {backupPath}");
    }
    
    File.WriteAllText(filePath, content);
    Console.WriteLine("文件保存完成");
};

// 使用自定义方法创建 Config 实例
var config = new Config(new FileInfo("./config.json"), customReader, customWriter);

读取键值

若键不存在则返回默认值,并且同时也会写入键值(若没有提供默认值则写入空)

// 标准示例: var value = config.Get<T>(键, <可选>默认值);

//  {
//      "114514": "1919810"
//  }
var value = config.Get("114514", "1919810");
var value = config.Get<string>("114514");

//  {
//      "abc": {
//          "def": 1234
//      }
//  }
var value = config.Get("abc.def", 1234);
var value = config.Get<int>("abc.def");

写入键值

// 标准示例: config.Set<T>(键, 值);

//  {
//      "114514": "1919810"
//  }
config.Set("114514", "1919810");

// 其他类型与 Get<T> 同理...
Description
一个自己觉得怎么好用怎么写的配置文件库
Readme LGPL-3.0 68 KiB
Languages
C# 100%