gpt4 book ai didi

c# - System.Runtime.Caching.MemoryCache 的通用实现

转载 作者:可可西里 更新时间:2023-11-01 08:22:00 28 4
gpt4 key购买 nike

MemoryCache 是否有任何通用的替代方案/实现?

我知道 MemoryCache 在底层使用 Hashtable,所以只需转换为使用 Dictionary<,>,这是 Hashtable 的通用版本。

这将提供类型安全并提供性能优势,因为无需装箱/拆箱。

编辑:我感兴趣的另一件事是使用不同的 key 类型。默认值为 System.String。

最佳答案

Is there any generic alternative / implementation for MemoryCache?

不在基类库中。你必须自己动手,但就我个人而言,我只会围绕 MemoryCache 做一个包装。提供您想要的 API。

This would provide type safety and provide performance benefits as no boxing/unboxing

类型安全可以在包装类中很容易地处理。如果您存储值类型(而不是类),则装箱/拆箱只会是一个问题,即使那样,也可能是最小的,因为您不太可能经常从缓存中推送和提取足够多的数据来实现真正的性能问题。

至于类型安全性和可用性,我实际上已经编写了自己的方法来包装 MemoryCache item 在通用方法 中的调用,从 API 的角度来看,它允许更好地使用。这非常简单 - 通常只需要一个方法,例如:

public T GetItem<T>(string key) where T : class
{
return memoryCache[key] as T;
}

同样,您可以创建一个方法来以相同的方式设置值。

EDIT: Another thing I'm interested in is having a different key type. The default is a System.String.

MemoryCache 不直接支持此功能,因此需要相当多的工作来生成您自己的 key 。一种选择是制作一个类型安全的包装器,它还提供了一个 Func<T, string>根据您的值生成字符串键 - 这将允许您为任何类型生成缓存条目 T .当然,您必须小心地将所有数据包含在字符串中作为比较的一部分。

关于c# - System.Runtime.Caching.MemoryCache 的通用实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11018607/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com