从缓存中获取(如果可用),否则使用lambda设置值

本文关键字:lambda 设置 获取 如果 缓存 | 更新日期: 2023-09-27 17:59:30

在Rails中,我可以写这样的东西:

value = Rails.cache.fetch("foo") { "bar" }

这样做的目的是尝试使用键"foo"在缓存中获取值,如果存在,则返回值。否则,运行代码块,在本例中返回"bar"并在缓存中设置该值。

我想在C#中实现类似的东西,但我不知道如何实现。这可能吗?我认为它可以使用lambda函数和匿名方法来完成,比如:

Cache.fetch(("foo") => "bar" );

从缓存中获取(如果可用),否则使用lambda设置值

调用的语法类似于:

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...
    }
}
相关文章: