Что вы можете сделать, это написать класс, который инкапсулирует настройки и затем считывает их в Hashtable.
У вас может быть базовый метод GetSetting, который ищет настройки на основе имени.Если параметр находится в Hashtable, верните значение, в противном случае перейдите в базу данных, чтобы найти параметр, а затем сохраните его в Hashtable.Затем вы можете написать отдельные свойства для каждого желаемого параметра, каждый из которых вызывает методы GetSetting / SetSetting.
Это позволяет легко сохранять настройки в БД и кэшировать чтения, чтобы избежать постоянного чтения БД.1005 *
public class Settings {
private object SyncRoot = new object();
private System.Collections.Hashtable _cache = new System.Collections.Hashtable();
public T GetSetting<T>(string xPath, T defaultValue)
{
lock (SyncRoot)
{
if (!_cache.ContainsKey(xPath))
{
T val = GetSettingFromDB<T>(xPath, defaultValue);
_cache[xPath] = val;
return val;
}
return (T)_cache[xPath];
}
}
public T GetSettingFromDB<T>(string xPath, T defaultValue)
{
// Read from DB
}
public void SaveSetting<T>(string xPath, T value)
{
lock (SyncRoot)
{
if (_cache.ContainsKey(xPath))
_cache[xPath] = value;
}
SaveSettingToDB<T>(xPath, value);
}
public T SaveSettingToDB<T>(string xPath, T defaultValue)
{
// Read from DB
}
}
Затем просто создайте класс с набором свойств, подобных этому:
public static bool BooleanFeature
{
get { return Settings.GetSetting<bool>("BooleanFeature", true); }
set { Settings.SaveSetting<bool>("BooleanFeature", value); }
}
Теперь вы можете сделать это в своем коде:
if (Setting.BooleanFeature) {
// Run certain code
else {
// Run other code
}