这是一个代码生成器之类的程序:业务模块 有环境配置文件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类呢?或者大家有什么比较好的建议? 谢谢!

解决方案 »

  1.   

    描述的不太明白,不是下面是否是你要的?/// <summary>
    /// 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"]
      

  2.   

    Edifier0709(腦袋重構中.....)  谢谢 应该是这样的我这样只是我自己的想法   不知大家读取配置信息的时候是怎样 读取的  期待大家的意见
      

  3.   

    可以在类中增加一个Templates的集合属性,而不是为每个子项设置为属性.关于读取XML文档,我感觉系统自带的XML命名空间下的类已经很方便了.
      

  4.   

    关于读取XML文档,我感觉系统自带的XML命名空间下的类已经很方便了.
    同意!
      

  5.   

    关于读取XML文档,我感觉系统自带的XML命名空间下的类已经很方便了.