/// <summary> /// Получить список значений перечисления, которые будут использоваться в интерфейсе пользователя /// </summary> /// <param name="enumType">Тип перечисления</param> /// <param name="values">Значения из перечисления</param> /// <param name="include">Включить или исключить значения из values</param> /// <returns></returns> public static List <EnumWrapper> GetEnumValues(Type enumType, EnumCollection values = null, Boolean include = true) { if (EnumValues == null) { EnumValues = new Dictionary <Type, List <EnumWrapper> >(); } if (!EnumValues.ContainsKey(enumType)) { object[] attrs = enumType.GetCustomAttributes(typeof(Rekod.Services.TypeResourceAttribute), false); if (attrs.Count() == 1) { List <EnumWrapper> enumWrappers = new List <EnumWrapper>(); foreach (System.Enum enumValue in Enum.GetValues(enumType)) { enumWrappers.Add(new EnumWrapper() { Value = enumValue }); } EnumValues.Add(enumType, enumWrappers); } } List <EnumWrapper> result = null; if (EnumValues.ContainsKey(enumType)) { if (values == null) { result = EnumValues[enumType]; } else { result = (from EnumWrapper enumWrapper in EnumValues[enumType] where values.Contains(enumWrapper.Value) == include select enumWrapper).ToList(); } } return(result); }