tijian_jichuang/Code/xiaoy.Excel/AppConfig.cs

217 lines
7.2 KiB
C#
Raw Normal View History

2025-02-20 11:54:48 +08:00
// ================================================================================
// File: AppConfig.cs
// Desc: <20><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC>Ķ<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>ȡweb.config<69><67>app.config<69><67><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݡ<EFBFBD>
//
// Called by:
//
// Auth: <20><><EFBFBD><EFBFBD>
// Date: 2010<31><30>8<EFBFBD><38>20<32><30>
// ================================================================================
// Change History
// ================================================================================
// Date: Author: Description:
// -------- -------- -------------------
//
// ================================================================================
// Copyright (C) 2010-2012
// ================================================================================
using System;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.Text;
using System.Reflection;
using System.Xml;
using System.IO;
using System.Configuration;
namespace xiaoy.Excel
{
/// <summary>
/// ϵͳ<CFB5><CDB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E0A3AC>ȡϵͳ<CFB5><CDB3><EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD>ò<EFBFBD><C3B2><EFBFBD>
/// <20><><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD>IConfigurationSectionHandler<65>ӿ<EFBFBD>
/// </summary>
public class AppConfig : System.Configuration.IConfigurationSectionHandler
{
#region ˽<EFBFBD>б<EFBFBD><EFBFBD><EFBFBD>
string m_strSectionName;
/// <summary>
/// <20><><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6>ϵͳ<CFB5><CDB3><EFBFBD>öΣ<C3B6><CEA3>ڸ<EFBFBD>Ӧ<EFBFBD><D3A6>ϵͳ<CFB5><CDB3>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/// </summary>
NameValueCollection m_configValues;
static NameValueCollection m_configApp;
#endregion
#region <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/// <summary>
/// <20><>ʼ<EFBFBD><CABC> AppConfiguration <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD>
/// </summary>
public AppConfig()
: this(null)
{
}
/// <summary>
/// <20><>ʼ<EFBFBD><CABC> AppConfiguration <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD>
/// </summary>
/// <param name="sectionName">Ĭ<>϶<EFBFBD>ȡ<EFBFBD>Ķε<C4B6><CEB5><EFBFBD><EFBFBD>ơ<EFBFBD></param>
public AppConfig(string sectionName)
{
m_strSectionName = sectionName;
}
#endregion
#region <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/// <summary>
/// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ö<EFBFBD><C3B6><EFBFBD><EFBFBD><EFBFBD>
/// </summary>
protected virtual string SectionName
{
get
{
return m_strSectionName;
}
set
{
m_strSectionName = value;
}
}
/// <summary>
/// <20><>ȡappSettings<67><73><EFBFBD>ö<EFBFBD><C3B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݡ<EFBFBD>
/// </summary>
public static NameValueCollection AppSettings
{
get
{
if (m_configApp == null)
{
m_configApp = new NameValueCollection();
//NameValueCollection v = (NameValueCollection)ConfigurationSettings.AppSettings;
KeyValueConfigurationCollection v=GetDllConfiguration().AppSettings.Settings;
if (v != null)
{
foreach (string key in v.AllKeys)
{
m_configApp.Set(key, v[key].Value);
}
}
}
return m_configApp;
}
}
/// <summary>
/// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD>ö<EFBFBD><C3B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݺ<EFBFBD>Ĭ<EFBFBD><C4AC><EFBFBD><EFBFBD><EFBFBD>ݵIJ<DDB5><C4B2><EFBFBD><EFBFBD><EFBFBD>Ĭ<EFBFBD><C4AC>ΪappSettings<67><73><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD>
/// </summary>
public virtual NameValueCollection ModuleConfigSettings
{
get
{
if (m_configValues == null)
{
m_configValues = new NameValueCollection();
//<2F><><EFBFBD><EFBFBD>AppSetting<6E><67><EFBFBD><EFBFBD>
m_configValues.Add(AppSettings);
if (SectionName != null && !SectionName.Equals(string.Empty))
{
NameValueCollection nv = GetConfig(SectionName);
//<2F><>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD><EFBFBD>ò<EFBFBD>Ϊ<EFBFBD><CEAA>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (nv != null)
{
//ģ<><C4A3><EFBFBD><EFBFBD><EFBFBD>ÿ<EFBFBD><C3BF>Ը<EFBFBD><D4B8><EFBFBD>AppSetting<6E>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD>
foreach (string key in nv.Keys)
{
m_configValues.Set(key, nv[key]);
}
}
}
}
return m_configValues;
}
set
{
m_configValues = value;
}
}
/// <summary>
/// <20><>װ<EFBFBD><D7B0>һ<EFBFBD><D2BB>, ȷ<><C8B7><EFBFBD><EFBFBD><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ķ<EFBFBD><C4B7><EFBFBD>ΪDll<6C>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>, <20>Ӷ<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>ȷ<EFBFBD><C8B7>Dll<6C><6C><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>·<EFBFBD><C2B7>
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD>õ<EFBFBD><C3B5><EFBFBD>ִ<EFBFBD>г<EFBFBD><D0B3><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)<29><>·<EFBFBD><C2B7>
/// </summary>
private static string DllConfigFilePath
{
get
{
Assembly t_assembly = Assembly.GetCallingAssembly();
Uri t_uri = new Uri(Path.GetDirectoryName(t_assembly.CodeBase));
return Path.Combine(t_uri.LocalPath, t_assembly.GetName().Name + ".config");
}
}
#endregion
#region <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/// <summary>
/// <20><>ȡij<C8A1><C4B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD>öΣ<C3B6><CEA3><EFBFBD>
/// </summary>
/// <param name="sectionName"><3E><><EFBFBD>öε<C3B6><CEB5><EFBFBD><EFBFBD><EFBFBD>Z</param>
/// <returns><3E><><EFBFBD>ö<EFBFBD><C3B6>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD>ԡ<EFBFBD></returns>
public static NameValueCollection GetConfig(string sectionName)
{
NameValueCollection values = null;
try
{
values = new NameValueCollection();
ConfigurationSection cs = GetDllConfiguration().GetSection(sectionName);
XmlDocument xDoc = new XmlDocument();
xDoc.LoadXml(cs.SectionInformation.GetRawXml());
XmlNode xList = xDoc.ChildNodes[0];
foreach (XmlNode xNode in xList.ChildNodes)
{
if (xNode.NodeType == XmlNodeType.Element)
{
values.Add(xNode.Attributes[0].Value, xNode.Attributes[1].Value);
}
}
}
catch
{
values = new NameValueCollection();
}
return values;
}
/// <summary>
/// <20><>ȡdll<6C><6C>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/// </summary>
/// <param name="targetAsm"></param>
/// <returns></returns>
private static Configuration GetDllConfiguration()
{
string configFile = DllConfigFilePath;
ExeConfigurationFileMap map = new ExeConfigurationFileMap();
map.ExeConfigFilename=configFile;
return ConfigurationManager.OpenMappedExeConfiguration(map, ConfigurationUserLevel.None);
}
#endregion
#region IConfigurationSectionHandler <EFBFBD><EFBFBD>Ա
/// <summary>
/// <20><><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD><C2B5><EFBFBD><EFBFBD>ô<EFBFBD><C3B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>򲢽<EFBFBD><F2B2A2BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD><D3B5>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>򼯺<EFBFBD><F2BCAFBA>С<EFBFBD>
/// </summary>
/// <param name="parent"><3E><>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD>ý<EFBFBD><C3BD>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>á<EFBFBD></param>
/// <param name="configContext"><3E><><EFBFBD>ýڴ<C3BD><DAB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><C2B7><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD>ò<EFBFBD><C3B2><EFBFBD><EFBFBD>DZ<EFBFBD><C7B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD>Visual Basic <20><>Ϊ Nothing<6E><67><EFBFBD><EFBFBD> </param>
/// <param name="section"><3E><><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2> XmlNode<64><65><EFBFBD><EFBFBD><E1B9A9><EFBFBD><EFBFBD><EFBFBD>ý<EFBFBD> XML <20><><EFBFBD>ݵ<EFBFBD>ֱ<EFBFBD>ӷ<EFBFBD><D3B7>ʡ<EFBFBD></param>
/// <returns>һ<><D2BB> NameValueCollection<6F><6E></returns>
public object Create(object parent, object configContext, System.Xml.XmlNode section)
{
NameValueSectionHandler handler = new NameValueSectionHandler();
return handler.Create(parent, configContext, section);
}
#endregion
}
}