using System; using System.ComponentModel; using System.Reflection; using System.Text; namespace Gestor.Application.Helpers { public class BindingEnumHelper { public BindingEnumHelper() { } public static string ConcatenarDescricoesEnum(string valores) where TEnum : Enum { if (valores == null) { return null; } return BindingEnumHelper.ConcatenarDescricoesEnum(Array.ConvertAll(valores.Split(new char[] { ',' }), new Converter(int.Parse))); } private static string ConcatenarDescricoesEnum(int[] valores) where TEnum : Enum { StringBuilder stringBuilder = new StringBuilder(); int[] numArray = valores; for (int i = 0; i < (int)numArray.Length; i++) { int num = numArray[i]; if (!Enum.IsDefined(typeof(TEnum), num)) { stringBuilder.Append("Valor desconhecido, "); } else { string str = BindingEnumHelper.ObterDescricaoEnum((TEnum)Enum.ToObject(typeof(TEnum), num)); stringBuilder.Append(string.Concat(str, ", ")); } } return stringBuilder.ToString().TrimEnd(new char[] { ',', ' ' }); } private static string ObterDescricaoEnum(TEnum valor) where TEnum : Enum { DescriptionAttribute[] customAttributes = (DescriptionAttribute[])valor.GetType().GetField(valor.ToString()).GetCustomAttributes(typeof(DescriptionAttribute), false); if (customAttributes == null || customAttributes.Length == 0) { return valor.ToString(); } return customAttributes[0].Description; } } }