Я пытаюсь уменьшить код базовой платы, получая данные из моего хранилища кеша.Я в основном копировал и вставлял один и тот же код снова и снова, поэтому я поместил всю эту логику в новый класс, CacheReadCommand.Я пытаюсь сделать это с помощью async / await, так как в моем хранилище базы данных уже реализован async / await.В итоге получилось, что я получил этот стек ожидающих ключевых слов при попытке выполнить CacheReadCommand.Read.Это на самом деле ничего не возвращает и оставляет приложение зависшим.Где я тут ошибся?
CacheReadCommand
public class CacheReadCommand : ICacheReadCommand {
private readonly ICacheRepository _repo;
public CacheReadCommand(ICacheRepository repo) {
_repo = repo;
}
public async Task<T> Read<T>(string cacheKey, Func<T> query) {
T retVal = await _repo.GetValue<T>(cacheKey);
if(retVal == null) {
retVal = query.Invoke();
if(retVal != null) {
await _repo.SetValue<T>(cacheKey, retVal);
}
}
return retVal;
}
}
** Хранилище настроек **
public async Task<Setting> GetSetting(Guid guid, string key) {
string cacheKey = $"GetSetting_{guid}_{key}";
return await await _readCommand.Read(cacheKey, async () => await ReadOne<Setting>("GetSetting", guid));
}
protected async Task<T> ReadOne<T>(string sql, Guid siteGuid) {
DynamicParameters parms = new DynamicParameters();
parms.Add(PARMNAME_GUID, siteGuid.ToFormattedString());
return await ReadOne<T>(GetCommandDefinition(sql, parms));
}