public FuncResult <Session> GetSessionSave(string sessionId) { if (settings.IsEnabledFileCache && inMemoryStorage.DoesSessionExist(sessionId)) { return(inMemoryStorage.GetSessionSave(sessionId)); } var resultFromFile = dataProvider.GetSessionSave(sessionId); if (resultFromFile.IsSuccessful) { inMemoryStorage.Add(resultFromFile.Value); return(resultFromFile); } if (settings.IsSessionAutoCreate) { var session = inMemoryStorage.CreateSession(sessionId); return(session.AsFuncResult()); } return(FuncResult.Failed <Session>()); }