MemoryCache.Default在.NET Core中不可用?

hen*_*gst 13 .net c# memorycache coreclr dnx

我正在从.NET 4.6到.NET Core移植一些代码,并且遇到了MemoryCache的一些问题.4.6代码使用MemoryCache.Default来实例化缓存,但这似乎在.NET Core中不可用.在.NET Core中是否有相同的内容,或者我是否应该将我自己的MemoryCache作为单例创建并通过IOC注入它?

Bog*_*dan 10

通常你会使用单身人士 IMemoryCache

IServiceProvider ConfigureServices(IServiceCollection services){ 
...
 services.AddMemoryCache(); 
...
}
Run Code Online (Sandbox Code Playgroud)

但您也可以创建缓存

mycache = new MemoryCache(memoryCacheOptions)

如果你需要做一些更复杂的东西 memoryCacheOptions可以注入 - IOptions<MemoryCacheOptions>你可以使用它

myCustomMemoryCache = new MemoryCache(memoryCacheOptions);
Run Code Online (Sandbox Code Playgroud)

https://docs.asp.net/projects/api/en/latest/autoapi/Microsoft/Extensions/Caching/Memory/IMemoryCache/


Men*_*ace 5

System.Runtime.Caching.MemoryCache和Microsoft.Extensions.Caching.Memory.MemoryCache是​​完全不同的实现。

它们是相似的,但是具有不同的问题/方面。

System.Runtime.Caching.MemoryCache是​​较旧的版本(4.6),基于ObjectCache,通常如您所述通过MemoryCache.Default使用。实际上,可以通过.Net标准格式的NuGet库在.Net Core中使用它。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/