在.NET中,为什么ObjectCache比MemoryCache是​​首选类型?

Tom*_*ane 1 .net c# objectcache memorycache

所以 很多 的例子使用.NET中的内存缓存(的包括官方文档)与实例吧:

private readonly ObjectCache memoryCache = MemoryCache.Default;
Run Code Online (Sandbox Code Playgroud)

有什么理由要优先于此:

private readonly MemoryCache memoryCache = MemoryCache.Default;
Run Code Online (Sandbox Code Playgroud)

mad*_*ion 5

这类似于声明变量或接收类型Stream而不是FileStream或的参数MemoryStream:不必关心您拥有哪种实现的灵活性。

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


Dea*_*uga 5

喜欢的理由ObjectCacheMemoryCache以固体为L ...

里氏替换原则:

程序中的对象应该可以用它们的子类型的实例替换,而不会改变该程序的正确性。

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