Enum - criando EnumHelper

<< Click to Display Table of Contents >>

Navigation:  Outros >

Enum - criando EnumHelper

Previous pageReturn to chapter overviewNext page

Main

 

using System;

using System.ComponentModel;

 

namespace ConsoleApplication8

{

  public enum Tipo

   {

       Bug = 1,

       Implementacao = 2,

 

       [Description("Documentação")]

       Documentacao = 3,

 

       [Description("Outro tipo")]

       Outro = 4,

       Suporte = 5,

       Alteracao = 6

   };

 

  class Program

   {

      static void Main(string[] args)

       {

          Tipo tipo = Tipo.Bug;

 

          Console.WriteLine(EnumHelper.GetDescricao(tipo)); // "Documentação"

          Console.WriteLine(EnumHelper.GetInt(tipo));         // 3

          Console.WriteLine(EnumHelper.GetEnum<Tipo>(3));     // Tipo.Documentacao

          Console.WriteLine(EnumHelper.GetEnumDaDescricao<Tipo>("Documentação")); // Tipo.Documentacao

          Console.ReadLine();

       }

   }

}

 

EnumHelper

 

using System;

using System.ComponentModel;

using System.Reflection;

 

/// <summary>

/// This class implements helper methods for enumeration

/// </summary>

public class EnumHelper

{

  /// <summary>

  /// Retorna um enum a partir de seu número equivalente  (SeuEmun)3

  /// </summary>

  public static T GetEnum<T>(Int32 value)

   {

      return (T)Enum.Parse(typeof(T), value.ToString());

   }

  /// <summary>

  /// Retorna um enum a partir da sua string

  /// </summary>

  public static T GetEnum<T>(string value)

   {

      return (T)Enum.Parse(typeof(T), value);

   }

  /// <summary>

  /// Obtem o numero de um enum = (int)Enum.Constante

  /// </summary>

  public static Int32 GetInt<T>(T enumField)

   {

      return Convert.ToInt32(enumField);

   }

 

  /// <summary>

  /// lê a descrição usando reflexion

  /// </summary>

  public static String GetDescricao(Enum value)

   {

      FieldInfo fieldInfo = value.GetType().GetField(value.ToString());

      DescriptionAttribute[] attributes =

       (DescriptionAttribute[])fieldInfo.GetCustomAttributes(typeof(DescriptionAttribute), false);

      return (attributes.Length > 0) ? attributes[0].Description : value.ToString();

   }

 

  /// <summary>

  /// Retorna o enum a partir da descrição

  /// </summary>

  public static T GetEnumDaDescricao<T>(string desc)

   {

      Type enumType = typeof(T);

      string[] names = Enum.GetNames(enumType);

      foreach (string name in names)

       {

          if (GetDescricao((Enum)Enum.Parse(enumType, name)).Equals(desc))

           {

              return (T)Enum.Parse(enumType, name);

           }

       }

      throw new ArgumentException("Não encontrada enum para esta descrição");

   }

}