У меня есть словарь с ключом Tuple
, например:
private readonly IDictionary<Tuple<string, string>, List<Bom>> bomCache
= new Dictionary<Tuple<string, string>, List<Bom>>();
Я использовал его как кэш для метода:
private async Task<List<Bom>> buildActiveBoms(string materialId, string plantId) {
var key = new Tuple<string, string>(materialId, plantId);
if (!bomCache.ContainsKey(key)) {
try {
bomCache[key] = await loadList($"Bom:{materialId}:{plantId}", document => new Bom {
BomStatusId = document["BomStatusId"],
BomTypeId = document["BomTypeId"]
});
}
catch (Exception error) {
logger.Error(error);
throw;
}
}
// how, after above condition, this entry can still not exist?
try {
return bomCache.ContainsKey(key) ? bomCache[key] : new List<Bom>();
}
catch (Exception error) {
logger.Error(error);
throw;
}
}
loadList()
всегда возвращается в наименее пустой список, но даже для гарантии того, что это обработано, после добавления условного возврата (проверка ContainsKey()
) я все еще получил `KeyNotFoundException:
![debug session](https://i.stack.imgur.com/jjMoQ.png)
Что может быть причиной этого и как смягчить это?