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(); } } }
private void OnValueRead(ValueReadEventArgs args) { ValueRead?.Invoke(this, args); }