来源: http://www.cnblogs.com/allenlooplee/archive/2008/12/14/1354492.html
自定义配置文件,例如
< Option Name ="MaxSelectionCount" Value ="18" ></ Option >
< Option Name ="MinDate" Value ="10/18/2008" ></ Option >
< Option Name ="MaxDate" Value ="12/03/2008" ></ Option >
</ Options >
读取设置, 效果: OptionsManager.Instance["MaxSelectionCount"] = 20;
类似与: ConfigurationManager.AppSettings["connectionString"];
OptionsManager类,用到了单件模式, 索引
{
private OptionsManager()
{
_options = LoadOptions();
}
public static readonly OptionsManager _Instance = new OptionsManager();
private Dictionary < string , string > _options = new Dictionary < string , string > ();
public static OptionsManager Instance
{
get
{
return _Instance;
}
}
public string this [ string name]
{
get { return _options[name]; }
set { _options[name] = value; }
}
}
从配置XML文件中读取到字典中
用到了.NET 3.0的: Anonymous Collection, LINQ To XML, LINQ To XML's Projection
{
if (File.Exists(GetXMLPath()))
{
System.Diagnostics.Debug.WriteLine( " true " );
}
// XElement root = XElement.Load(GetXMLPath());
// IEnumerable<XElement> options =
from item in root.Elements( " Option " )
select item;
var optionsDict =
from item in XElement.Load(GetXMLPath()).Elements( " Option " )
select new
{
Name = item.Attribute( " Name " ).Value,
Value = item.Attribute( " Value " ).Value
};
return optionsDict.ToDictionary(sr => sr.Name, sr => sr.Value);
}
--------------------------------------------------------
reference:http://www.cnblogs.com/allenlooplee/archive/2009/01/19/1378594.html
稍微复杂点的:
配置一个InterceptionManager类,构造函数
1. 读取这个文件,
2. 每条Interception都读取为一个MessageInterceptor对象,
3. 注意枚举类型的转换
InterceptionManager类包含方法
这样下面两行代码就能实现读取并使用所有MessageInterceptor配置