AppConfig.cs 4.36 KB
using System;
using System.Configuration;

namespace CNCFanucDataReading
{
    /// <summary>
    /// 应用程序配置
    /// </summary>
    public static class AppConfig
    {
        static AppConfig()
        {
            // 初始化时从配置文件加载
            ReloadConfig();
        }

        /// <summary>
        /// 加载配置
        /// </summary>
        public static void ReloadConfig()
        {
            //Iot数据配置
            DaqClientId = GetAppSetting("DaqClientId");
            ProjectKeys = GetAppSetting("ProjectKeys");
            FactoryCode = GetAppSetting("FactoryCode");
            EquipmentTypeCode = GetAppSetting("EquipmentTypeCode");
            DAQClientInterval = GetAppSetting<int>("DAQClientInterval", 5000);
           
            // 连接字符串
            ConnectionString = GetConnectionString("DefaultConnection");

            // 监控配置
            MonitorInterval = GetAppSetting<int>("MonitorInterval", 5000);
            FanucTimeout = GetAppSetting<int>("FanucTimeout", 5000);

            // 应用配置
            ApplicationName = GetAppSetting("ApplicationName", "CNCFanuc数据采集系统");
            Version = GetAppSetting("Version", "1.0.0");

        }

        // ========== Iot数据配置 ==========

        /// <summary>
        /// Iot客户端ID
        /// </summary>
        public static string DaqClientId { get; private set; }

        /// <summary>
        /// 项目号
        /// </summary>
        public static string ProjectKeys { get; private set; }

        /// <summary>
        /// 厂房编号
        /// </summary>
        public static string FactoryCode { get; private set; }

        /// <summary>
        /// 监控间隔(毫秒)
        /// </summary>
        public static int DAQClientInterval { get; private set; }
        

        /// <summary>
        ///设备类型
        /// </summary>
        public static string EquipmentTypeCode { get; private set; }

        // ========== 连接字符串配置 ==========

        /// <summary>
        /// 默认连接字符串
        /// </summary>
        public static string ConnectionString { get; private set; }

        // ========== 设备监控配置 ==========

        /// <summary>
        /// 监控间隔(毫秒)
        /// </summary>
        public static int MonitorInterval { get; private set; }

        // ========== Fanuc设备配置 ==========

        /// <summary>
        /// Fanuc超时时间(毫秒)
        /// </summary>
        public static int FanucTimeout { get; private set; }

        // ========== 应用配置 ==========

        /// <summary>
        /// 应用名称
        /// </summary>
        public static string ApplicationName { get; private set; }

        /// <summary>
        /// 版本号
        /// </summary>
        public static string Version { get; private set; }


        // ========== 辅助方法 ==========

        /// <summary>
        /// 获取连接字符串
        /// </summary>
        public static string GetConnectionString(string name)
        {
            try
            {
                var connectionString = ConfigurationManager.ConnectionStrings[name];
                return connectionString?.ConnectionString ?? string.Empty;
            }
            catch (Exception ex)
            {
                Console.WriteLine($"读取连接字符串 {name} 失败: {ex.Message}");
                return string.Empty;
            }
        }

        /// <summary>
        /// 获取应用程序设置
        /// </summary>
        public static string GetAppSetting(string key, string defaultValue = "")
        {
            try
            {
                return ConfigurationManager.AppSettings[key] ?? defaultValue;
            }
            catch
            {
                return defaultValue;
            }
        }

        /// <summary>
        /// 获取应用程序设置(泛型版本)
        /// </summary>
        public static T GetAppSetting<T>(string key, T defaultValue = default)
        {
            try
            {
                var value = ConfigurationManager.AppSettings[key];
                if (string.IsNullOrEmpty(value))
                    return defaultValue;

                return (T)Convert.ChangeType(value, typeof(T));
            }
            catch
            {
                return defaultValue;
            }
        }

    }
}