在Rails中我可以这样写:
value = Rails.cache.fetch("foo") { "bar" }
这样做是尝试使用键“foo”获取缓存中的值,如果存在,则返回该值。否则,运行代码块,在这种情况下返回“bar”并在缓存中设置该值。
我想在C#中实现类似的东西,但我不知道如何去做。它甚至可能吗?我假设可以使用lambda函数和匿名方法完成,例如:
Cache.fetch(("foo") => "bar" );
答案 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...
}
}