Я работаю с методом, который внутренне вызывает ConcurrentDictionary.GetOrAdd()
.ConcurrentDictionary - Преобразование addValueFactory (Func <string, T, T>) в updateValueFactory (Func <string, T, T>)?
Я хотел бы добавить звонок в ConcurrentDictionary.AddOrUpdate()
insde таким же способом.
Однако метод содержания принимает только параметр addValueFactory
(Func<string, T>
).
Чтобы вызвать метод AddOrUpdate()
, мне также нужен updateValueFactory
(Func<string, T, T>
). Но я не хочу менять подпись метода.
В идеале, я хотел бы использовать существующую функцию addValueFactory
для создания функции updateValueFactory
, которая даст тот же результат T
.
Есть ли способ конвертировать addValueFactory (Func<string, T>
) в udpateValueFactory (Func<string, T, T>
)?
public SomeMethod(string key, Func<string, T> addValueFactory)
{
// existing code
concurrentDictionary.GetOrAdd(key, addValueFactory)
// code to add
// but how to transform (Func<string, T>) into Func<string, T, T>?
var updateValueFactory = ?
concurrentDictionary.AddOrUpdate(key, addValueFactory, updateValueFactory)
}
Я не был на 100% уверен, что теги использовать для этого. Пожалуйста, обновите их, если вы считаете, что их можно улучшить.
Спасибо! Это то, что я искал. –