利用XML,自定义配置信息
来源: http://www.cnblogs.com/allenlooplee/archive/2008/12/14/1354492.html
自定义配置文件,例如
<Options>
<Option Name="MaxSelectionCount" Value="18"></Option>
<Option Name="MinDate" Value="10/18/2008"></Option>
<Option Name="MaxDate" Value="12/03/2008"></Option>
</Options>
<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类,用到了单件模式, 索引
class 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; }
}
}
{
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
private Dictionary<string, string> LoadOptions()
{
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);
}
{
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配置
作者:DylanWind
出处:http://www.cnblogs.com/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
出处:http://www.cnblogs.com/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。