# # 配置文件读取 using System; namespace WinFormsApp.Utils { /// /// 配置读取示例类,演示ConfigReader的各种用法 /// public static class ConfigExample { /// /// 数据库配置类 /// public class DatabaseConfig { public string Name { get; set; } = ""; public bool Enabled { get; set; } public int Type { get; set; } public string Connection { get; set; } = ""; public string Remarks { get; set; } = ""; public bool Print { get; set; } } /// /// 演示配置读取的各种方法 /// 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("Module:Disability", new string[0]); Console.WriteLine($"Module Disabilities: [{string.Join(", ", disabilities)}]"); // 7. 读取复杂对象配置(单个数据库配置) DatabaseConfig[] dbConfigs = ConfigReader.GetObject("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("MqttServer:Port", 1883); var mqttUser = ConfigReader.GetValue("MqttServer:User", "admin"); var mqttLog = ConfigReader.GetValue("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=== 示例结束 ==="); } /// /// 获取应用程序的主要配置信息 /// /// 配置信息字符串 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(); } /// /// 验证必要的配置项是否存在 /// /// 验证结果 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; } } }