217 lines
7.2 KiB
C#
217 lines
7.2 KiB
C#
|
|
// ================================================================================
|
|||
|
|
// 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
|
|||
|
|
}
|
|||
|
|
}
|