public void Remove(TKey key) { var keyIndex = GetKeyIndex(key); if (keyIndex != -1) { _keys.RemoveAt(keyIndex); _values.RemoveAt(keyIndex); OnValueChanged.InvokeSafe(key); OnDictionaryChanged.InvokeSafe(); } }
// Note: Calls OnValueChanged for each value so that persistency & ui can be updated correctly public void Clear() { var keysTmp = new List <TKey>(_keys); // Note: copy keys to avoid modification from subscribers _keys.Clear(); _values.Clear(); foreach (var key in keysTmp) { OnValueChanged.InvokeSafe(key); } OnDictionaryChanged.InvokeSafe(); }
public virtual void Set(TKey key, TValue value) { var keyIndex = GetKeyIndex(key); if (keyIndex == -1) { _keys.Add(key); _values.Add(value); } else { _values[keyIndex] = value; } OnValueChanged.InvokeSafe(key); OnDictionaryChanged.InvokeSafe(); }