public ConfigValue[] GetValues(params ConfigParameter[] parameters) { var values = new ConfigValue[parameters.Length]; for (var index = 0; index < parameters.Length; ++index) { values[index] = GetValue(parameters[index]); } return values; }
public ConfigValue[] GetValues(params ConfigParameter[] parameters) { if (Parent != null) { // delegate entirely to the parent var parentValues = Parent.GetValues(parameters); // update the dictionary with values from the parent Lock.EnterWriteLock(); try { foreach (var parentValue in parentValues) { Values[parentValue.Parameter] = parentValue; } } finally { Lock.ExitWriteLock(); } return parentValues; } // No parent, so our values are the single point of truth. var values = new ConfigValue[parameters.Length]; Lock.EnterReadLock(); try { for (int index = 0; index < values.Length; ++index) { values[index] = GetValueWithoutLock(parameters[index]); } } finally { Lock.ExitReadLock(); } return values; }
public ConfigValue[] GetValues(params ConfigParameter[] parameters) { _lock.EnterReadLock(); try { var xmlConfig = LoadData(); var values = new ConfigValue[parameters.Length]; for (var index = 0; index < parameters.Length; ++index) { var parameter = parameters[index]; var item = xmlConfig.GetItem(parameter.Name); ConfigValue value; if (item != null) { value = new ConfigValue(parameter, item.Value, true); } else { value = new ConfigValue(parameter, null, false); } values[index] = value; } return values; } finally { _lock.ExitReadLock(); } }
public void SetValue(ConfigParameter parameter, string value) { if (Parent != null) { Parent.SetValue(parameter, value); } Lock.EnterWriteLock(); try { Values[parameter] = new ConfigValue(parameter, value, true); } finally { Lock.ExitWriteLock(); } }