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" />
                    
Directory.Packages.props
<PackageReference Include="StrongTypedCache.Extensions" />
                    
Project file
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
                    
#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
                    
Install as a Cake Addin
#tool nuget:?package=StrongTypedCache.Extensions&version=1.1.0
                    
Install as a Cake Tool

StrongTypedCache

A library for strongly-typed caching with DI support (.NET 8).

Installation

  1. Add a reference to the StrongTypedCache.Extensions and StrongTypedCacheLibrary projects.
  2. Add the Microsoft.Extensions.DependencyInjection package 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 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.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.1.0 232 10/27/2025
1.0.2 219 10/27/2025
1.0.1 216 10/27/2025
1.0.0 208 10/26/2025
0.3.0 226 10/26/2025