5.5 KiB
5.5 KiB
# 配置文件读取
using System;
namespace WinFormsApp.Utils { ///
/// <summary>
/// 演示配置读取的各种方法
/// </summary>
public static void DemonstrateUsage()
{
Console.WriteLine("=== ConfigReader 使用示例 ===\n");
// 1. 读取字符串配置
string allowedHosts = ConfigReader.GetString("AllowedHosts", "localhost");
Console.WriteLine($"AllowedHosts: {allowedHosts}");
// 2. 读取嵌套字符串配置
string kestrelUrl = ConfigReader.GetString("Kestrel:Endpoints:Http:Url", "http://localhost:5000");
Console.WriteLine($"Kestrel URL: {kestrelUrl}");
// 3. 读取布尔配置
bool modulePattern = ConfigReader.GetBool("Module:Pattern", false);
Console.WriteLine($"Module Pattern: {modulePattern}");
// 4. 读取整数配置
int httpPort = ConfigReader.GetInt("HttpServer:Port", 8080);
Console.WriteLine($"HTTP Server Port: {httpPort}");
int logLevel = ConfigReader.GetInt("Logs:LogLevel", 1);
Console.WriteLine($"Log Level: {logLevel}");
// 5. 读取双精度浮点数配置
double maxFileSize = ConfigReader.GetDouble("Logs:MaxFileSize", 10.0);
Console.WriteLine($"Max File Size: {maxFileSize}MB");
// 6. 读取数组配置
string[] disabilities = ConfigReader.GetArray<string>("Module:Disability", new string[0]);
Console.WriteLine($"Module Disabilities: [{string.Join(", ", disabilities)}]");
// 7. 读取复杂对象配置(单个数据库配置)
DatabaseConfig[] dbConfigs = ConfigReader.GetObject<DatabaseConfig[]>("DB", new DatabaseConfig[0]);
Console.WriteLine($"\n数据库配置数量: {dbConfigs.Length}");
foreach (var config in dbConfigs)
{
Console.WriteLine($" - {config.Name}: Enabled={config.Enabled}, Type={config.Type}");
}
// 8. 使用泛型方法读取各种类型
var mqttPort = ConfigReader.GetValue<int>("MqttServer:Port", 1883);
var mqttUser = ConfigReader.GetValue<string>("MqttServer:User", "admin");
var mqttLog = ConfigReader.GetValue<bool>("MqttServer:Log", true);
Console.WriteLine($"\nMQTT配置:");
Console.WriteLine($" Port: {mqttPort}");
Console.WriteLine($" User: {mqttUser}");
Console.WriteLine($" Log: {mqttLog}");
// 9. 检查配置键是否存在
bool hasRedisConfig = ConfigReader.HasKey("Redis");
bool hasInvalidKey = ConfigReader.HasKey("InvalidKey");
Console.WriteLine($"\nRedis配置存在: {hasRedisConfig}");
Console.WriteLine($"无效键存在: {hasInvalidKey}");
// 10. 读取不存在的配置(返回默认值)
string nonExistentConfig = ConfigReader.GetString("NonExistent:Config", "默认值");
int nonExistentNumber = ConfigReader.GetInt("NonExistent:Number", 999);
Console.WriteLine($"\n不存在的配置:");
Console.WriteLine($" 字符串: {nonExistentConfig}");
Console.WriteLine($" 数字: {nonExistentNumber}");
Console.WriteLine("\n=== 示例结束 ===");
}
/// <summary>
/// 获取应用程序的主要配置信息
/// </summary>
/// <returns>配置信息字符串</returns>
public static string GetAppConfigSummary()
{
var summary = $@"
应用程序配置摘要:
-
HTTP服务器端口: {ConfigReader.GetInt("HttpServer:Port", 8080)}
-
WebSocket端口: {ConfigReader.GetInt("Websocket:Port", 3000)}
-
MQTT服务器端口: {ConfigReader.GetInt("MqttServer:Port", 1883)}
-
Redis启用状态: {ConfigReader.GetBool("Redis:En", false)}
-
模块默认路径: {ConfigReader.GetBool("Module:Pattern", true)}
-
日志级别: {ConfigReader.GetInt("Logs:LogLevel", 1)}
-
最大归档文件数: {ConfigReader.GetInt("Logs:MaxArchiveFiles", 50)} "; return summary.Trim(); }
/// <summary> /// 验证必要的配置项是否存在 /// </summary> /// <returns>验证结果</returns> public static bool ValidateRequiredConfigs() { string[] requiredKeys = { "HttpServer:Port", "Websocket:Port", "MqttServer:Port", "Module:Pattern", "Logs:LogLevel" }; bool allValid = true; Console.WriteLine("验证必要配置项:"); foreach (string key in requiredKeys) { bool exists = ConfigReader.HasKey(key); Console.WriteLine($" {key}: {(exists ? "✓" : "✗")}"); if (!exists) allValid = false; } return allValid; }} }