You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: AspNetCoreCacheKit/AspNetCoreCacheKit.csproj
+1-1Lines changed: 1 addition & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -7,7 +7,7 @@
7
7
8
8
<IsPackable>true</IsPackable>
9
9
<PackageId>AspNetCoreCacheKit</PackageId>
10
-
<Version>2.1.0</Version>
10
+
<Version>3.0.0</Version>
11
11
<Authors>Simone Marano</Authors>
12
12
<Description>Lightweight caching toolkit for ASP.NET Core with group-based keys, per-entry and per-group duration, configurable via appsettings.json and DI-ready design.</Description>
Copy file name to clipboardExpand all lines: CHANGELOG.md
+25-4Lines changed: 25 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -11,8 +11,29 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
11
11
12
12
---
13
13
14
-
## [2.1.0] - 2026-03-24
15
-
14
+
## [3.0.0] - 2026-03-XX
15
+
16
+
### Added
17
+
- Unit test suite (`AspNetCoreCacheKit.Tests`) using xUnit 2.x and real `IMemoryCache`
18
+
- Repository restructured to support multiple projects: main project moved to `AspNetCoreCacheKit/` subfolder, tests in `AspNetCoreCacheKit.Tests/`
19
+
20
+
### Changed
21
+
-`ICacheService.Set` is now generic: `void Set<T>(string groupKey, string key, T value, TimeSpan? duration = null)` — **breaking change**
22
+
-`ICacheService.Set` overload without group is now generic: `void Set<T>(string key, T value, TimeSpan? duration = null)` — **breaking change**
23
+
24
+
### Fixed
25
+
-`Set` followed by `GetOrCreate<T>` / `GetOrCreateAsync<T>` now works correctly — previously `Set(object)` was type-incompatible with generic read methods causing cache misses
26
+
27
+
### Breaking changes
28
+
-`Set(string groupKey, string key, object value)` → `Set<T>(string groupKey, string key, T value)`: update all call sites to use the generic overload
29
+
```csharp
30
+
// before
31
+
_cache.Set("users", "1", user);
32
+
33
+
// after — type is usually inferred automatically
34
+
_cache.Set("users", "1", user);
35
+
```
36
+
16
37
---
17
38
18
39
## [2.0.0] - 2026-03-24
@@ -66,7 +87,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
[](https://github.com/simoneM93/AspNetCoreCacheKit/actions/workflows/publish.yml)
A lightweight caching library for ASP.NET Core featuring **group-based keys**, configurable expiration, and a DI-ready design that wraps `IMemoryCache` in a clean, testable abstraction.
8
+
A lightweight caching library for ASP.NET Core featuring **group-based keys**, per-entry and per-group duration, configurable via `appsettings.json`, and a DI-ready design that wraps `IMemoryCache` in a clean, testable abstraction.
10
9
11
10
> **Why AspNetCoreCacheKit?**
12
11
> `IMemoryCache` is powerful but low-level. AspNetCoreCacheKit adds group-based key management,
13
-
> `appsettings.json` configuration, and a consistent API that makes caching easy to use and easy to mock in tests.
12
+
> per-group and per-entry expiration, `appsettings.json` configuration, and a consistent
13
+
> type-safe API that makes caching easy to use and easy to mock in tests.
14
14
15
15
---
16
16
17
17
## ✨ Features
18
18
19
19
- 🔑 **Group-based keys** — organise cache entries with prefixes like `"users:123"`
20
20
- ⚡ **`GetOrCreate` and `GetOrCreateAsync`** — read-through pattern out of the box
21
+
- ⏱️ **Per-group and per-entry duration** — fine-grained expiration control
21
22
- 🗑️ **`Delete`** — remove a single entry by key or group + key
22
23
- ✅ **Configuration validation** with DataAnnotations
0 commit comments