/// <see cref="IFeatureStore.Delete{T}(VersionedDataKind{T}, string, int)"/> public void Delete <T>(VersionedDataKind <T> kind, string key, int version) where T : IVersionedData { try { RwLock.TryEnterWriteLock(RwLockMaxWaitMillis); IDictionary <string, IVersionedData> itemsOfKind; if (Items.TryGetValue(kind, out itemsOfKind)) { IVersionedData item; if (!itemsOfKind.TryGetValue(key, out item) || item.Version < version) { itemsOfKind[key] = kind.MakeDeletedItem(key, version); } } } finally { RwLock.ExitWriteLock(); } }
/// <inheritdoc/> public void Delete <T>(VersionedDataKind <T> kind, string key, int version) where T : IVersionedData { lock (WriterLock) { ImmutableDictionary <string, IVersionedData> itemsOfKind; if (Items.TryGetValue(kind, out itemsOfKind)) { IVersionedData item; if (!itemsOfKind.TryGetValue(key, out item) || item.Version < version) { ImmutableDictionary <string, IVersionedData> newItemsOfKind = itemsOfKind.SetItem(key, kind.MakeDeletedItem(key, version)); Items = Items.SetItem(kind, newItemsOfKind); } } } }