<PackageReference Include="Polly" Version="5.6.1" />

ContextualTtl

public class ContextualTtl : ITtlStrategy
Defines a ttl strategy which will cache items for a TimeSpan which may be influenced by data in the execution context.
using System; namespace Polly.Caching { public class ContextualTtl : ITtlStrategy { public static readonly string TimeSpanKey = "ContextualTtlTimeSpan"; public static readonly string SlidingExpirationKey = "ContextualTtlSliding"; private static readonly Ttl _noTtl = new Ttl(TimeSpan.Zero, false); public Ttl GetTtl(Context context) { if (!context.ContainsKey(TimeSpanKey)) return _noTtl; bool slidingExpiration = context.ContainsKey(SlidingExpirationKey) && ((context[SlidingExpirationKey] as bool?) ?? false); return new Ttl((context[TimeSpanKey] as TimeSpan?) ?? TimeSpan.Zero, slidingExpiration); } } }