public object this[string key]
        {
            get
            {
                if (_values.TryGetValue(key, out object result))
                {
                    ValueReadEventArgs args = new ValueReadEventArgs(key, result);
                    OnValueRead(args);
                    return(result);
                }

                if (_parent?.TryGetValue(key, out result) ?? false)
                {
                    return(result);
                }

                throw new KeyNotFoundException($"No entry was found for key: {key}");
            }
            set
            {
                bool changing = !_values.ContainsKey(key);
                _values[key] = value;
                if (changing)
                {
                    OnKeysChanged();
                }
            }
        }
示例#2
0
 private void OnValueRead(ValueReadEventArgs args)
 {
     ValueRead?.Invoke(this, args);
 }