| << 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, 2025 |