#closures #concurrentdictionary
Вопрос:
У меня есть текущая функция
public static ICacheManager GetCacheManager(string cacheManagerName, TimeSpan? expiration) { var cacheManager = CacheManagers.GetOrAdd(cacheManagerName, keyName =gt; { var ret = ServiceLocator.Current.GetInstancelt;ICacheManagergt;(); if (expiration.HasValue) { ret.Configure(keyName, expiration.Value); } else { ret.Configure(keyName); } return ret; }); return cacheManager; }
Райдер JetBrains говорит, что есть
Closure allocation: 'keyName' parameter (outer closure of 'expiration' parameter)
Ну, я знаю, что есть переопределение
GetOrAddlt;TArggt;(TKey, Funclt;TKey,TArg,TValuegt;, TArg)
но как им пользоваться?
Как переписать эту функцию, чтобы избежать закрытия и передать другие параметры в лямбда-функцию? Что делать, если мне нужно передать несколько параметров (запрос к БД и т.д.)