/// <summary> /// Gets all names of entities set in RightsCheckList attribute /// Includes entity itself if it's present in entities rights /// </summary> /// <param name="dataType"></param> /// <returns></returns> private List <string> GetEntitiesToCheck(Type dataType) { if (!_checkedEntites.TryGetValue(dataType, out var entitiesToCheck)) { foreach (var custAttr in dataType.GetCustomAttributes(false)) { if (custAttr is RightsCheckListAttribute rightsAttr) { entitiesToCheck = rightsAttr.CheckedEntities; } } if (EntityRights.ContainsKey(dataType.Name)) { if (entitiesToCheck == null) { entitiesToCheck = new List <string>(1) { dataType.Name }; } else { entitiesToCheck.Add(dataType.Name); } } _checkedEntites[dataType] = entitiesToCheck; } return(entitiesToCheck); }