17 using System.Collections.Generic;
42 protected Dictionary<SecurityDatabaseKey, TEntry>
Entries {
get;
set; }
52 private readonly Func<T> _loadFromFromDataFolder;
53 private readonly Action<TEntry, TEntry> _updateEntry;
62 Func<T> fromDataFolder, Action<TEntry, TEntry> updateEntry)
66 _loadFromFromDataFolder = fromDataFolder;
67 _updateEntry = updateEntry;
75 #pragma warning disable CA1000 // Do not declare static members on generic types
77 #pragma warning restore CA1000 // Do not declare static members on generic types
88 internal void UpdateDataFolderDatabase()
93 var newDatabase = _loadFromFromDataFolder();
94 Merge(newDatabase, resetCustomEntries:
false);
103 internal virtual void Merge(T newDatabase,
bool resetCustomEntries)
105 var newEntries =
new List<KeyValuePair<SecurityDatabaseKey, TEntry>>();
107 foreach (var newEntry
in newDatabase.Entries)
109 if (
Entries.TryGetValue(newEntry.Key, out var entry))
111 if (resetCustomEntries || !
CustomEntries.Contains(newEntry.Key))
113 _updateEntry(entry, newEntry.Value);
118 newEntries.Add(KeyValuePair.Create(newEntry.Key, newEntry.Value));
123 .Where(kvp => (!resetCustomEntries &&
CustomEntries.Contains(kvp.Key)) || newDatabase.Entries.ContainsKey(kvp.Key))
127 if (resetCustomEntries)
140 return Entries.ContainsKey(key);
173 #pragma warning disable CA1000 // Do not declare static members on generic types
175 #pragma warning restore CA1000 // Do not declare static members on generic types
180 stringSymbol =
string.Empty;
198 stringSymbol = symbol.
Value;