????????.net??????????У?????????????????Щ????????????????????????????ò???????.
??????????????:1.????? 2??????????????(Dictionary).
??????????????Щ???????Web.config??xml???????????У????????????????????д????????.
???????????????????????????????????ù??????У????????????????? ?????????AppSetings?е???????

????????????????????????????ConfiguratonManager?ж??????????????AppSettings????.
???????????:
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConfigManager
{
public class ConfigurationContainer
{
private static ConfigurationContainer m_Instance = null;
public static ConfigurationContainer Instance
{
get
{
if (m_Instance == null)
m_Instance = new ConfigurationContainer();
return m_Instance;
}
}
private ConfigurationContainer()
{
}
private ReadOnlyDictionary<string?? string> _configuration;
private Dictionary<string?? string> _mutableConfiguration;
public ReadOnlyDictionary<string?? string> Configuration
{
get
{
//TODO:check is newest or not in database??
if (_mutableConfiguration == null)
Init();
_configuration =
new ReadOnlyDictionary<string?? string>(_mutableConfiguration);
return _configuration;
}
}
public bool Add(string key?? string value)
{
bool bRet = false;
if (!_mutableConfiguration.ContainsKey(key))
{
_mutableConfiguration.Add(key?? value);
bRet = true;
}
return bRet;
}
public bool Update(string key?? string value)
{
bool bRet = false;
if (_mutableConfiguration.ContainsKey(key))
{
_mutableConfiguration[key] = value;
bRet = true;
}
return bRet;
}
public bool Remove(string key)
{
bool bRet = false;
if (_mutableConfiguration.ContainsKey(key))
{
_mutableConfiguration.Remove(key);
bRet = true;
}
return bRet;
}
//private bool ConfigurationAllowed(string key?? string value)
//{
//    // Put in your checks and balances
//    // here and return the appropriate result
//    return true;
//}
private void Init()
{
_mutableConfiguration = new Dictionary<string?? string>();
_mutableConfiguration.Add("key"?? "value");
_mutableConfiguration.Add("key1"?? "value1");
_mutableConfiguration["key2"] = "value2";
}
}
}
ConfigurationContainer:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConfigManager
{
public class ConfigManager
{
private static IReadOnlyDictionary<string?? string> _AppSettings = null;
public static IReadOnlyDictionary<string?? string> Appettings
{
get
{
//initial ensurer the newest
_AppSettings = ConfigurationContainer.Instance.Configuration;
return _AppSettings;
}
}
//Exception:Violence to  Add
public static void BeNaughtyWithConfiguration()
{
IDictionary<string?? string> convertToReadWrite
= (IDictionary<string?? string>)_AppSettings;
//ConfigElement element = convertToReadWrite["key"];
//element.Value = "Haa Haa";
//Console.WriteLine(element.Value);
//Console.WriteLine(convertToReadWrite["key"]);
//Console.ReadLine();
convertToReadWrite.Add("Key12345"?? "xsds");
}
public static bool Add(string key?? string value)
{
return ConfigurationContainer.Instance.Add(key?? value);
}
public static bool Update(string key?? string value)
{
return ConfigurationContainer.Instance.Update(key?? value);
}
public static bool Remove(string key)
{
return ConfigurationContainer.Instance.Remove(key);
}
}
}