在 .NET 中,为什么 ObjectCache 比 MemoryCache 更受欢迎?

In .NET, why is ObjectCache the preferred type over MemoryCache?

many examples of using the memory cache in .NET (including the official docs) 实例化:

private readonly ObjectCache memoryCache = MemoryCache.Default;

有什么理由更喜欢这个:

private readonly MemoryCache memoryCache = MemoryCache.Default;

它类似于声明一个变量或接收一个类型为 Stream 的参数,而不是 FileStreamMemoryStream:灵活性,不必关心你有哪个实现。

ObjectCacheMemoryCache 的基础 class。在实例化时,您正在创建一个特定的实现,但在您的代码的其他地方,您拥有哪个实现并不重要。重要的是基础 class 提供的通用接口。您可以更改实例化以创建不同的类型,并且不必修改使用缓存的代码。

ObjectCache 是一个抽象的 class,因此您不能直接实例化它并演示您应该如何构建一个遵循编写 ObjectCache 的人希望您遵守的规则的缓存。

所以MemoryCache继承自ObjectCache。对于日常使用,您会使用 MemoryCashe。但是如果你想要你自己的,你可以从 objectCashe 继承并编写你自己的方法。

public class MemoryCache : ObjectCache, 
IEnumerable, IDisposable

MemoryCache 更喜欢 ObjectCache 的原因是 SOLID 中的 L...

里氏替换原则:

Objects in a program should be replaceable with instances of their subtypes without altering the correctness of that program.

ObjectCache 可以被它的任何子类型替换,包括 MemoryCacheMemoryCache 不能被任何迫使你进入特定实现的东西替换。