怎麼寫有這種形式的函數:如何在C#中編寫看起來像A(key,B(key,C(key,ValFactory(key))))的遞歸函數?
A(key, B(key, C(key, ValFactory(key))))
其中A,B和C有這樣的簽名:
TResult GetOrAdd(string key, Func<string, TResult> generator);
而且Valfactory有簽名:
TResult Get(string key);
「鏈接」功能的數量沒有限制btw,因此它可以是A,B或A,B,C或A,B,C,D,E等。
我將函數A,B,C等存儲在一個LinkedList中
我如何以他想要的方式調用它們?
編輯加入澄清一些信息:
我需要這個來實現一個多級緩存。有幾種不同的緩存都實現了「GetOrAdd」功能。第一級緩存只是一個已經具有GetOrAdd函數的ConcurrentDictionary。
緩存的工作方式是,如果第一級緩存沒有特定鍵的條目,它會嘗試查找第二級緩存。第2級緩存看起來未命中的3級緩存等
沒有任何緩存可以有另外一個緩存的任何知識,它應該只是執行簽名TResult GetOrAdd(string, Func<string, TResult> functionToCallOnCacheMiss)
你一定要表現出一定的代碼。否則,它的頭腦閱讀。 – nawfal