Xml based configuration
using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Collections; using System.Xml; namespace Open_MUD.Kernel.Utils { class Config { private string CONFIG_FOLDER = "\\Config"; private string END_CONFIG_FILE = ".config.xml"; private static Config __conf=null; private static Hashtable configs; public static Config getInstance() { if (__conf == null) __conf = new Config(); return __conf; } private Config() { LoadXML(); } private void LoadXML() { configs = new Hashtable(); if (Directory.Exists(Directory.GetCurrentDirectory() + CONFIG_FOLDER)) { DirectoryInfo dconfig = new DirectoryInfo(Directory.GetCurrentDirectory() + CONFIG_FOLDER); foreach (FileInfo file in dconfig.GetFiles()) { String key = file.Name; if (key.EndsWith(END_CONFIG_FILE)) { key = key.Substring(0, key.Length - END_CONFIG_FILE.Length); XmlDocument xmldoc = new XmlDocument(); xmldoc.Load(file.FullName); configs.Add(key, xmldoc ); } } } } public int getIntValue(String xml, String key) { if (configs.ContainsKey(xml)) { XmlNode nodo = (configs[xml] as XmlDocument).SelectSingleNode("/config/"+key); if (nodo != null) return Int32.Parse(nodo.InnerText); } throw new MudException("Fallo al recuperar " + key + " de " + xml); } internal string getStringValue(String xml, String key) { if (configs.ContainsKey(xml)) { XmlNode nodo = (configs[xml] as XmlDocument).SelectSingleNode("/config/" + key); if (nodo != null) return nodo.InnerText; } throw new MudException("Fallo al recuperar " + key + " de " + xml); } } }