Подтвердить что ты не робот

MemoryCache.Default недоступен в .NET Core?

Я переношу некоторый код из .NET 4.6 с .NET Core и столкнулся с некоторыми проблемами с MemoryCache. Код 4.6 использует MemoryCache.Default для создания экземпляра кеша, но это, похоже, не доступно в .NET Core. Есть ли какой-либо эквивалент этому в .NET Core или я должен скорее создать собственный MemoryCache в качестве одноэлементного кода и ввести его через IOC?

4b9b3361

Ответ 1

Обычно вы используете синглтон IMemoryCache

IServiceProvider ConfigureServices(IServiceCollection services){ 
...
 services.AddMemoryCache(); 
...
}

но вы также можете создать кеш

mycache = new MemoryCache(memoryCacheOptions)

Если вам нужно сделать более сложные вещи memoryCacheOptions можно вводить через - IOptions<MemoryCacheOptions>, и вы можете использовать его

myCustomMemoryCache = new MemoryCache(memoryCacheOptions);

https://docs.microsoft.com/en-us/aspnet/core/performance/caching/memory

Ответ 2

System.Runtime.Caching.MemoryCache и Microsoft.Extensions.Caching.Memory.MemoryCache - это абсолютно разные реализации.

Они похожи, но имеют разные наборы проблем/предостережений.

System.Runtime.Caching.MemoryCache является более старой версией (4.6) и основана на ObjectCache и обычно используется через MemoryCache.Default, как вы описали. На самом деле его можно использовать в .Net Core через библиотеку NuGet в стандартном формате .Net. https://www.nuget.org/packages/System.Runtime.Caching/

Microsoft.Extensions.Caching.Memory.MemoryCache - это новая базовая версия .NET, которая обычно используется в новых основных ASP-приложениях. Он реализует IMemoryCache и обычно добавляется в службы, как описано выше @Bogdan

https://github.com/aspnet/Extensions/blob/master/src/Caching/Memory/src/MemoryCache.cs https://www.nuget.org/packages/Microsoft.Extensions.Caching.Memory/