📄 setting.cs
字号:
#region Copyright & License
//
// $Copyright:$
//
#endregion
#region Document Information
// $Author: Bai.shijun $
// $Rev: 511 $
// $Date: 05-10-08 16:12 $
#endregion
using System;
using System.Collections;
using System.Collections.Generic;
using System.Text;
using System.Xml;
using System.Diagnostics;
using Eai.Configuration;
using Eai.Data;
namespace Eai.Data
{
public class Setting
{
private const string ConfigNodePath = "data";
internal const string DefaultCreatorName = "default";
static Setting()
{
Setting current = new Setting();
XmlNode configNode = EaiSetting.CurrentSetting.ConfigSection;
if (configNode != null)
{
XmlNode dataNode = configNode.SelectSingleNode(ConfigNodePath);
if (dataNode != null) current.Load(dataNode);
}
Current = current;
}
public static readonly Setting Current;
public Setting()
{
}
public void Load(string xmlString)
{
XmlDocument doc = new XmlDocument();
doc.LoadXml(xmlString);
XmlNode configNode = doc.DocumentElement;
Load(configNode);
}
private IDataAccessorCreatorList dataAccessorCreators =
new DataAccessorCreatorList();
public IDataAccessorCreatorList DataAccessorCreators
{
get { return dataAccessorCreators; }
}
public void Load(XmlNode dataNode)
{
foreach (XmlNode cnode in dataNode.ChildNodes)
{
XmlElement ele = cnode as XmlElement;
if (ele == null) continue;
switch (ele.Name)
{
case "dataAccessorCreator":
{
LoadDataAccessorCreator(ele);
break;
}
default:
{
throw new Exception("Unkown element name " + ele.Name);
}
}
}
}
private void LoadDataAccessorCreator(XmlElement ele)
{
string name = ele.GetAttribute("name");
if (name == "")
{
name = DefaultCreatorName;
}
IDataAccessorCreatorList creators = dataAccessorCreators;
if (creators.ContainsKey(name)) creators.Remove(name);
DataAccessorCreatorConfig config = CreateDataAccessorCreatorConfigByXmlElement(name, ele);
creators.Add(name, config);
}
public static DataAccessorCreatorConfig CreateDataAccessorCreatorConfigByXmlElement(string name, XmlElement ele)
{
string creatorType = ele.GetAttribute("type");
XmlNodeList propNodes = ele.SelectNodes("property");
//load properties of creator.
IDictionary<string, string> properties = LoadProperty(propNodes);
DataAccessorCreatorConfig config = new DataAccessorCreatorConfig(name, creatorType, properties, ele);
return config;
}
private static IDictionary<string, string> LoadProperty(XmlNodeList nodes)
{
IDictionary<string, string> properties = new Dictionary<string, string>();
foreach (XmlNode node in nodes)
{
XmlElement ele = node as XmlElement;
if (ele == null) continue;
string key = ele.GetAttribute("key");
if (key != "")
{
string value = ele.GetAttribute("value");
properties.Add(key, value);
}
}
return properties;
}
public interface IDataAccessorCreatorList : IDictionary<string, IDataAccessorCreatorConfig>
{
}
public class DataAccessorCreatorList : Dictionary<string, IDataAccessorCreatorConfig>, IDataAccessorCreatorList
{
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -