|
|
1 zi în urmă | |
|---|---|---|
| .. | ||
| Demos | 2 zile în urmă | |
| Models | 2 zile în urmă | |
| Apq.Cfg.Samples.csproj | 2 zile în urmă | |
| Program.cs | 2 zile în urmă | |
| README.md | 1 zi în urmă | |
Apq.Cfg 配置库的完整功能示例项目。
📖 在线文档:https://apq-cfg.vercel.app/
Apq.Cfg.Samples/
├── Program.cs # 入口程序,运行所有示例
├── Models/
│ └── ConfigModels.cs # 强类型配置模型
└── Demos/
├── BasicUsageDemo.cs # 示例 1: 基础用法
├── MultiFormatDemo.cs # 示例 2: 多格式支持
├── ConfigSectionDemo.cs # 示例 3: 配置节访问
├── BatchOperationsDemo.cs # 示例 4: 批量操作
├── TypeConversionDemo.cs # 示例 5: 类型转换
├── DynamicReloadDemo.cs # 示例 6: 动态重载
├── DependencyInjectionDemo.cs # 示例 7: 依赖注入
├── EncodingMappingDemo.cs # 示例 8: 编码映射
├── RedisDemo.cs # 示例 9: Redis 配置源
├── DatabaseDemo.cs # 示例 10: 数据库配置源
├── ConsulDemo.cs # 示例 11: Consul 配置源
├── EtcdDemo.cs # 示例 12: Etcd 配置源
├── NacosDemo.cs # 示例 13: Nacos 配置源
├── ApolloDemo.cs # 示例 14: Apollo 配置源
├── ZookeeperDemo.cs # 示例 15: Zookeeper 配置源
├── VaultDemo.cs # 示例 16: HashiCorp Vault 配置源
└── SourceGeneratorDemo.cs # 示例 17: 源代码生成器
# 在项目根目录运行
dotnet run --project Samples/Apq.Cfg.Samples
# 或进入示例目录运行
cd Samples/Apq.Cfg.Samples
dotnet run
演示 Apq.Cfg 的基本功能:
演示不同配置文件格式的支持:
Apq.Cfg.Ini)Apq.Cfg.Xml)Apq.Cfg.Yaml)Apq.Cfg.Toml)演示配置节(GetSection)功能:
GetSection 简化嵌套配置访问GetChildKeys)演示批量读写操作:
GetMany 批量获取配置GetMany<T> 批量获取并转换类型SetMany 批量设置配置演示 Get<T> 类型转换功能:
演示配置动态重载功能:
reloadOnChange 参数启用文件监听DynamicReloadOptions 配置防抖、策略等IChangeToken 监听配置变更ConfigChanges (Rx) 订阅配置变更事件演示与 Microsoft.Extensions.DependencyInjection 集成:
AddApqCfg 注册配置服务ConfigureApqCfg<T> 绑定强类型配置ICfgRoot、IConfigurationRootIOptions<T> 获取强类型配置演示编码检测和映射功能:
WithEncodingConfidenceThreshold 设置检测置信度WithEncodingDetectionLogging 启用检测日志AddReadEncodingMapping 指定读取编码AddWriteEncodingMappingWildcard 通配符映射演示 Redis 作为配置源:
演示数据库作为配置源:
演示 Consul KV 作为配置源:
演示 Etcd 作为配置源:
演示 Nacos 作为配置源:
演示 Apollo 作为配置源:
演示 Zookeeper 作为配置源:
演示 HashiCorp Vault 作为配置源:
演示 Apq.Cfg.SourceGenerator 功能:
[CfgSection] 特性标记配置类示例中使用的强类型配置模型定义在 Models/ConfigModels.cs:
public class DatabaseOptions
{
public string? Host { get; set; }
public int Port { get; set; }
public string? Name { get; set; }
}
public class LoggingOptions
{
public string? Level { get; set; }
public bool EnableConsole { get; set; }
}
public enum LogLevel
{
Debug, Info, Warning, Error
}
注意:由于
dotnet-etcd依赖Microsoft.Extensions.DependencyInjection >= 10.0.1,示例项目只支持 .NET 8.0+。 核心库Apq.Cfg和所有扩展库仍然支持 .NET 6.0+。