现在的位置: 首页 > 综合 > 正文

C#访问配置文件

2018年01月09日 ⁄ 综合 ⁄ 共 4894字 ⁄ 字号 评论关闭
/************************************
版权所有:SkylineSoft版权所有(C)
创建日期:2011-03-31
作  者:天涯居士
电子邮件:Jiangwzh@163.com

系统名称:SkylineSoft.GenericConfiguration
模块名称:通用配置文件访问
内容摘要:简华配置文件方问
***********************************/

using System;
using System.Collections.Generic;
using System.Text;
using System.Configuration;

namespace SkylineSoft
{
    public class GenericConfiguration
    {
        private Configuration Config { get; set; }

        private GenericConfiguration(Configuration config)
        {
            this.Config = config;
        }


        /// <summary>
        /// 打开配置文件
        ///
        /// 当前应用程序默认配置文件
        /// </summary>
        /// <returns></returns>
        public static GenericConfiguration Open()
        {
            return Open(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile);
        }
        /// <summary>
        /// 打开配置文件
        /// </summary>
        /// <param name="fileName">配置文件名</param>
        /// <returns></returns>
        public static GenericConfiguration Open(string fileName)
        {
            ExeConfigurationFileMap file = new ExeConfigurationFileMap();
            file.ExeConfigFilename = fileName;
            return new GenericConfiguration( ConfigurationManager.OpenMappedExeConfiguration(file, ConfigurationUserLevel.None));
        }

        /// <summary>
        /// 获取数据库连接设置
        /// </summary>
        /// <param name="key">键名</param>
        /// <returns></returns>
        public ConnectionStringSettings GetConnectionStringSetting(string key)
        {
            return this.Config.ConnectionStrings.ConnectionStrings[key];
        }

        /// <summary>
        /// 更新数据连接设置
        /// </summary>
        /// <param name="key">键名</param>
        /// <param name="connString">连接字符串</param>
        public void UpdateConnectionStringSetting(string key, string connString)
        {
            if (this.Config.ConnectionStrings.ConnectionStrings[key] == null)
                this.Config.ConnectionStrings.ConnectionStrings.Add(new ConnectionStringSettings(key, connString));
            else
                this.Config.ConnectionStrings.ConnectionStrings[key].ConnectionString = connString;
        }

        /// <summary>
        /// 删除数据库连接设置
        /// </summary>
        /// <param name="key">键名</param>
        public void RemoveConnectionStringSetting(string key)
        {
            if (this.Config.ConnectionStrings.ConnectionStrings[key] != null)
                this.Config.ConnectionStrings.ConnectionStrings.Remove(key);
        }

        /// <summary>
        /// 判断AppSettings中指定的键是否存在
        /// </summary>
        /// <param name="key">键名</param>
        /// <returns></returns>
        public bool AppSettingExisted(string key)
        {
            return this.Config.AppSettings.Settings[key] != null;
        }

        /// <summary>
        /// 获取AppSettings
        ///
        /// 返回String类型
        /// </summary>
        /// <param name="key">键名</param>
        /// <returns></returns>
        public string GetAppSettingString( string key)
        {
            if (this.Config.AppSettings.Settings[key] != null && !string.IsNullOrEmpty(Config.AppSettings.Settings[key].Value))
                return Config.AppSettings.Settings[key].Value;

            return string.Empty;
        }

        /// <summary>
        /// 获取AppSettings
        ///
        /// 返回Boolean类型
        /// </summary>
        /// <param name="key">键名</param>
        /// <returns></returns>
        public bool GetAppSettingBoolean(string key)
        {
            if (this.Config.AppSettings.Settings[key] != null)
            {
                string value = Config.AppSettings.Settings[key].Value;
                if (!string.IsNullOrEmpty(value))
                    return BooleanUtil.ConvertFrom(value);

            }
            return false;
        }

        /// <summary>
        /// 获取AppSettings
        /// </summary>
        /// <typeparam name="T">值类型</typeparam>
        /// <param name="config">配置对象</param>
        /// <param name="key">键名</param>
        /// <returns></returns>
        public T GetAppSettings<T>( string key)
        {
            if (this.Config.AppSettings.Settings[key] != null )
            {
                string value = Config.AppSettings.Settings[key].Value;
                if (!string.IsNullOrEmpty(value))
                    return (T)Convert.ChangeType(value, typeof(T));
            }
            return ReflectionUtil.GetTypeDefaultValue<T>();
        }




        /// <summary>
        /// 更新AppSettings
        /// </summary>
        /// <param name="key">键名</param>
        /// <param name="value">值</param>
        public void UpdateAppSettings(string key, string value)
        {
            if (AppSettingExisted(key))
                this.Config.AppSettings.Settings[key].Value = value;
            else
                this.Config.AppSettings.Settings.Add(key,value);
        }

        /// <summary>
        /// 更新AppSettings
        /// </summary>
        /// <param name="key">键名</param>
        /// <param name="value">值</param>
        public void UpdateAppSettings(string key, object value)
        {
            if (AppSettingExisted(key))
                this.Config.AppSettings.Settings[key].Value = value==null?string.Empty:value.ToString();
            else
                this.Config.AppSettings.Settings.Add(key, value == null ? string.Empty : value.ToString());
        }

        /// <summary>
        /// 删除Appsettings中指定的键
        /// </summary>
        /// <param name="key"></param>
        public void RemoveAppSettings(string key)
        {
            if (AppSettingExisted(key))
                this.Config.AppSettings.Settings.Remove(key);
        }



        /// <summary>
        /// 获取配置节
        /// </summary>
        /// <typeparam name="T">配置节类型</typeparam>
        /// <param name="config">配置对象</param>
        /// <param name="sectionName">节名</param>
        /// <returns></returns>
        public  T GetSection<T>(string sectionName) where T : ConfigurationSection
        {
            T section = null;
            try
            {
                section = this.Config.GetSection(sectionName) as T;
            }
            catch { }
            return section;
        }

        /// <summary>
        /// 保存配置
        /// </summary>
        public void Save()
        {
            if(this.Config!=null)
                this.Config.Save();
        }

        /// <summary>
        /// 保存配置
        /// </summary>
        /// <param name="mode">保存方式</param>
        public void Save(ConfigurationSaveMode mode)
        {
            if (this.Config != null)
                this.Config.Save(mode);
        }

        /// <summary>
        /// 另存配置
        /// </summary>
        /// <param name="fileName">文件名</param>
        public void SaveAs(string fileName)
        {
            if (this.Config != null)
                this.Config.SaveAs(fileName);
        }

        /// <summary>
        /// 另存配置
        /// </summary>
        /// <param name="fileName">文件名</param>
        /// <param name="mode">保存方式</param>
        public void SaveAs(string fileName, ConfigurationSaveMode mode)
        {
            if (this.Config != null)
                this.Config.SaveAs(fileName, mode);
        }
    }
}

抱歉!评论已关闭.