从缓存中获取(如果可用),否则使用lambda设置值
本文关键字:lambda 设置 获取 如果 缓存 | 更新日期: 2023-09-27 17:59:30
在Rails中,我可以写这样的东西:
value = Rails.cache.fetch("foo") { "bar" }
这样做的目的是尝试使用键"foo"在缓存中获取值,如果存在,则返回值。否则,运行代码块,在本例中返回"bar"并在缓存中设置该值。
我想在C#中实现类似的东西,但我不知道如何实现。这可能吗?我认为它可以使用lambda函数和匿名方法来完成,比如:
Cache.fetch(("foo") => "bar" );
调用的语法类似于:
var result = cache.Fetch("foo", () => "bar");
但很明显,您需要一个合适的Cache
类作为开始。代码签名类似于:
public Cache<TKey, TValue>
{
public TValue Fetch(TKey key, Func<TKey, TValue> defaultProvider)
{
... fetch by key, and run defaultProvider otherwise...
}
}