<< Click to Display Table of Contents >> Объектная модель > Основные механизмы > Cache – работа с кэшем TryGetValue – получить значение из кэша |
Метод используется для получения значения из кэша. Доступен только в серверном коде.
Синтаксис
C# |
public static bool TryGetValue<T> (string key, out T value); где T – тип значения кэша |
Параметры
key – ключ, по которому ищется значение кэша;
value – значение кэша.
Возвращаемое значение
True, если значение из кэша получено, иначе – false.
Пример. Получение заданий подразделения из кэша
public static Shell.Structures.Module.EmployeeAssignmentsCache GetCachedAssignment(IDepartment department)
{
var key = string.Format(Shell.Constants.Module.DepartmentAssignmentsCacheKey, department.Id);
Shell.Structures.Module.EmployeeAssignmentsCache cachedAssignmentCompletion;
var usersId = Employees.GetAll(e => Equals(e.Department, department)).Select(e => e.Id).ToList();
// Получить задания подразделения из кэша.
if (Cache.TryGetValue(key, out cachedAssignmentCompletion) && cachedAssignmentCompletion.Users.Select(u => u.UserId).OrderBy(x => x)
.SequenceEqual(usersId.OrderBy(x => x)))
// Обновить кэш заданий.
cachedAssignmentCompletion = UpdateEmployeeAssignmentsCache(cachedAssignmentCompletion, Sungero.Shell.Constants.Module.DepartmentCache);
else
{
// Вычислить задания, добавить их в кэш.
var lightUsers = new List<LightUser>();
foreach (var userId in usersId)
{
var lightUser = Shell.Structures.Module.LightUser.Create(userId, GetTimeZoneByUserId(userId));
lightUsers.Add(lightUser);
}
var newCache = Shell.Structures.Module.EmployeeAssignmentsCache.Create(null, department.Id, lightUsers, null, new List<Shell.Structures.Module.CachedAssignment>(), 0, 0, 0, 0, 0, 0, false);
cachedAssignmentCompletion = UpdateEmployeeAssignmentsCache(newCache, Sungero.Shell.Constants.Module.DepartmentCache);
}
if (cachedAssignmentCompletion.IsChanged)
Cache.AddOrUpdate(key, cachedAssignmentCompletion, Calendar.Today.AddDays(90));
return cachedAssignmentCompletion;
}
© Компания Directum, 2024 |