这是一个代码生成器之类的程序:业务模块 有环境配置文件setting.xml
〈Settings〉
<Templates>
<Template name="Entity">Biz.Templates.EntityTemplate</Template>
<Template name="Manager">Biz.Templates.ManagerTemplate</Template>
<Template name="Accessor">Biz.Templates.AccessorTemplate</Template>
</Templates>
<Orthers>
</Orthers>
〈/Settings〉我想生成一个类读取这个模板文件 ,我觉得应该采用单粒模式把 因为整个模块只有一个setting,我想获得每个Biz.Templates.EntityTemplate的值,应该是以属性的方式读取,比如:
public string Settings.Templates.Entity
{
get
{
return Biz.Templates.EntityTemplate
}
}
public string Settings.Templates.Manager
{
get
{
return Biz.Templates.ManagerTemplate
}
}
可是我的template 的数目是不固定的(现在只有三个Entity,Manager,Accessor) ,而代码是固定的,请问 我怎么设计这个 settingReader类呢?或者大家有什么比较好的建议? 谢谢!
〈Settings〉
<Templates>
<Template name="Entity">Biz.Templates.EntityTemplate</Template>
<Template name="Manager">Biz.Templates.ManagerTemplate</Template>
<Template name="Accessor">Biz.Templates.AccessorTemplate</Template>
</Templates>
<Orthers>
</Orthers>
〈/Settings〉我想生成一个类读取这个模板文件 ,我觉得应该采用单粒模式把 因为整个模块只有一个setting,我想获得每个Biz.Templates.EntityTemplate的值,应该是以属性的方式读取,比如:
public string Settings.Templates.Entity
{
get
{
return Biz.Templates.EntityTemplate
}
}
public string Settings.Templates.Manager
{
get
{
return Biz.Templates.ManagerTemplate
}
}
可是我的template 的数目是不固定的(现在只有三个Entity,Manager,Accessor) ,而代码是固定的,请问 我怎么设计这个 settingReader类呢?或者大家有什么比较好的建议? 谢谢!
/// Read settings file.
/// </summary>
public class Settings
{
private Settings(string filePath)
{
m_filePath = filePath; Initialize();
} private Hashtable mList = new Hashtable(); private string m_filePath = string.Empty; private static Settings mInstance; public static Settings SettingReader
{
get
{
if(mInstance == null)
{
mInstance = new Settings("X:\\Settings.xml");
} return mInstance;
}
} public Hashtable TemplateSettings
{
get
{
return mList;
}
} /// <summary>
/// Initialize.
/// </summary>
private void Initialize()
{
try
{
// first remove all items from list
mList.Clear();
// populate list with items from file
// open settings file
XmlTextReader reader = new XmlTextReader(m_filePath); // go through file and read the xml file and
// populate internal list with 'Template' elements
while (reader.Read())
{
if ((reader.NodeType == XmlNodeType.Element) && (reader.Name == "Template"))
mList[reader.GetAttribute("name")] = reader.Value;
}
reader.Close();
}
catch (Exception ex)
{
throw ex;
}
}
}使用的时候:
Settings.SettingReader.TemplateSettings["xxxxkey"]
同意!