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

时间:2011-06-20 10:20:05

标签: c# ruby-on-rails

在Rails中我可以这样写:

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

这样做是尝试使用键“foo”获取缓存中的值,如果存在,则返回该值。否则,运行代码块,在这种情况下返回“bar”并在缓存中设置该值。

我想在C#中实现类似的东西,但我不知道如何去做。它甚至可能吗?我假设可以使用lambda函数和匿名方法完成,例如:

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

1 个答案:

答案 0 :(得分:1)

调用语法类似于:

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...
    }
}