Acredito que quase todo mundo já precisou fazer uma validação de domínio alguma vez e boa parte das vezes, a primeira idéia que vem é utilizar um enum, porém algumas pessoas esbarram em uma dificuldade que é não poder ter um "enum de strings", ou seja, setar um texto decente para exibição.

Resposta:

Para contornar isso, iremos usar alguns funcionalidades que o .NET nos proporcionar, os Attributes e os Extension Methods.

C#:

public enum EstadoCivil
        {            
            [DisplayText(Texto="Solteiro e Feliz")]
            Solteiro,
            [DisplayText(Texto="Já era!")]
            Casado,
            [DisplayText(Texto = "Viuvo")]
            Viuvo,
            [DisplayText(Texto = "Novos tempos")]
            Divorciado
        }

        public class DisplayTextAttribute : Attribute
        {
            private string _texto;

            public string Texto
            {
                get { return _texto; }
                set { _texto = value; }
            }
        }
               
        public static string GetDisplayText(this Enum enumValue)
        {
            var type = enumValue.GetType();
            MemberInfo[] memberInfo = type.GetMember(enumValue.ToString());

            if (memberInfo == null || memberInfo.Length == 0)
                return enumValue.ToString();

            object[] attributes = memberInfo[0].GetCustomAttributes(typeof(DisplayTextAttribute), false);
            if (attributes == null || attributes.Length == 0)
                return enumValue.ToString();

            return ((DisplayTextAttribute)attributes[0]).texto;
        }
               
        static void Main(string[] args)
        {

            for (int i = 0; i < Enum.GetValues(typeof(EstadoCivil)).Length; i++)
            {
                Console.WriteLine((Enum.ToObject(typeof(EstadoCivil), i) as Enum).GetDisplayText());
            }
        }

Endereço de trackback para este post

Trackback URL (clique direito e copie atalho/localização do link)

Sem feedback para esse post ainda

Deixe seu comentário


Seu endereço de e-mail não será revelado nesse site.

Sua URL será exibida.
(Quebras de linha se tornam <br />)
(Nome, e-mail & website)
(Permitir que usuários o contatem através de um formulário eletrônico (seu e-mail não será exibido.))