Beispiel #1
0
 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;
 }
Beispiel #2
0
        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;
        }
Beispiel #3
0
 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();
     }
 }
Beispiel #4
0
 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();
     }
 }