如何编写具有这种形式的函数:
A(key, B(key, C(key, ValFactory(key))))
其中 A、B 和 C 具有此签名:
TResult GetOrAdd(string key, Func<string, TResult> generator);
Valfactory 有签名:
TResult Get(string key);
顺便说一句,“链接”函数的数量没有限制,因此它可以是 A、B 或 A、B、C 或 A、B、C、D、E 等。
我将函数 A、B、C 等存储在 LinkedList 中
我如何以我想要的方式称呼他们?
编辑添加一些信息以进行澄清:
我需要这个来实现多级缓存。有几个不同的缓存都实现了“GetOrAdd”功能。第一级缓存只是一个 ConcurrentDictionary 已经具有 GetOrAdd 函数。
缓存的工作方式是,如果一级缓存没有特定键的条目,它会尝试在二级缓存中查找。二级缓存在未命中时查找三级缓存等。
没有缓存应该知道另一个缓存,它应该只实现签名TResult GetOrAdd(string, Func<string, TResult> functionToCallOnCacheMiss)