StrongTypedCache.Extensions
1.1.0
dotnet add package StrongTypedCache.Extensions --version 1.1.0
NuGet\Install-Package StrongTypedCache.Extensions -Version 1.1.0
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="StrongTypedCache.Extensions" Version="1.1.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="StrongTypedCache.Extensions" Version="1.1.0" />
<PackageReference Include="StrongTypedCache.Extensions" />
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add StrongTypedCache.Extensions --version 1.1.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: StrongTypedCache.Extensions, 1.1.0"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package StrongTypedCache.Extensions@1.1.0
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=StrongTypedCache.Extensions&version=1.1.0
#tool nuget:?package=StrongTypedCache.Extensions&version=1.1.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
StrongTypedCache
A library for strongly-typed caching with DI support (.NET 8).
Installation
- Add a reference to the
StrongTypedCache.ExtensionsandStrongTypedCacheLibraryprojects. - Add the
Microsoft.Extensions.DependencyInjectionpackage if you don't have it already.
Usage
Registering in DI
using Microsoft.Extensions.DependencyInjection;
using StrongTypedCache.Extensions;
var services = new ServiceCollection();
services.AddStrongTypedInMemoryCache<string, MyType>();
You can set the expiration time (in seconds):
services.AddStrongTypedInMemoryCache<string, MyType>(absoluteExpirationTimeSec: 600); // 10 minutes
Nullable values support
Cache now supports nullable value types:
// String cache with nullable values
services.AddStrongTypedInMemoryCache<int, string?>();
// Later in code:
cache.CreateEntry(1, null); // ? Allowed!
if (cache.TryGetValue(1, out var value))
{
// value can be null
Console.WriteLine(value?.Length ?? 0);
}
Using the cache
using StrongTypedCache.Abstractions;
public class MyService
{
private readonly ICache<string, MyType> _cache;
public MyService(ICache<string, MyType> cache)
{
_cache = cache;
}
public void Example()
{
// Add to cache
_cache.CreateEntry("key1", new MyType());
// Get from cache
if (_cache.TryGetValue("key1", out var value))
{
// use value
}
// Remove from cache
_cache.Remove("key1");
// Get all values
var all = _cache.GetAllValues();
}
}
Key constraints
?? Important: Keys cannot be null (enforced by notnull constraint):
// ? This will cause compilation error
services.AddStrongTypedInMemoryCache<string?, MyType>();
// ? Use non-nullable key types
services.AddStrongTypedInMemoryCache<string, MyType>();
services.AddStrongTypedInMemoryCache<int, MyType>();
services.AddStrongTypedInMemoryCache<Guid, MyType>();
Interfaces
ICache<TKey, TValue>� main cache interface.InMemoryCache<TKey, TValue>� in-memory implementation.
Projects
StrongTypedCache.Abstractions� interfaces.StrongTypedCacheLibrary� cache implementation.StrongTypedCache.Extensions� DI integration.StrongTypedCache.Benchmarks� performance benchmarks using BenchmarkDotNet.
Requirements
- .NET 8
- Microsoft.Extensions.DependencyInjection
- Microsoft.Extensions.Caching.Memory
License
MIT
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
-
net8.0
- Microsoft.Extensions.Configuration.Binder (>= 9.0.8)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 9.0.8)
- Microsoft.Extensions.Options (>= 9.0.8)
- StrongTypedCache.Abstractions (>= 1.1.0)
- StrongTypedCache.InMemory (>= 1.1.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.