title: How send and receive a enum parameter?
body: <p>How send and receive a enum parameter?
  I have several type enum and I want to make a generic method to get of descriptions</p>
  
  <pre><code> public enum Lista_Size
   {
     [Description("Chica")] Chica,
     [Description("Grande")] Grande,
     [Description("Extra Grande")] Extra_Grande,
   }
  
   public enum Lista_Color
   {
     [Description("Verde")] Verde,
     [Description("Blanco Perla")] Blanco,
     [Description("Rojo Fuerte")] Rojo_Strong,
   }
  </code></pre>
  
  <p>I have this method to get description</p>
  
  <pre><code>    private static IEnumerable&lt;string&gt; Descripcion_Referencia(Enum Referencia)
      {
          var Descripcion = new List&lt;string&gt;();
          var Tipo = Referencia.GetType();
          var Nombre = Enum.GetName(Tipo, Referencia);
          var Campo = Tipo.GetField(Nombre);
          var Campo_Descripcion = Campo.GetCustomAttributes(typeof(DescriptionAttribute), true);
          foreach(DescriptionAttribute Atributo in Campo_Descripcion)
          {
              //MessageBox.Show("Atributo.Description: " + Atributo.Description);
              Descripcion.Add(Atributo.Description);
          }
          return Descripcion;
      }
  </code></pre>
  
  <p>And I have other two method that call de method Descripcion_Referencia, this method I want to make it generic. I want call it some that: Cargar_Combo(Lista_Color); or Cargar_Combo(Lista_Size) 
  but if I write public void Cargar_Combo(enum Lista) it indicate like mistake ¿How I have to send it or receive it?</p>
  
  <pre><code>    public void Cargar_Combo()
      {
          DataTable Dt_Combo = new DataTable();
          Dt_Combo.Columns.Add("Value");
          Dt_Combo.Columns.Add("Descripcion");
          DataRow Dr_Combo = Dt_Combo.NewRow();
          IEnumerable&lt;string&gt; Resultado;
  
          Type Tipo = typeof(Gral_Constantes.Cat_Uti_Formatos_Apartados.Referencia_Catalogo_Sistema);
          String[] Lista = Tipo.GetEnumNames();
  
          for (int i = 0; i &lt; Lista.Length; i++ )
          {
              Resultado = Descripcion_Referencia((Gral_Constantes.Cat_Uti_Formatos_Apartados.Referencia_Catalogo_Sistema)Enum.Parse(typeof(Gral_Constantes.Cat_Uti_Formatos_Apartados.Referencia_Catalogo_Sistema), Lista[i]));
              Dr_Combo = Dt_Combo.NewRow();
              Dr_Combo["Value"] = Lista[i];
              Dr_Combo["Descripcion"] = Resultado.ElementAt(0);
              Dt_Combo.Rows.Add(Dr_Combo);
  
          }
          Cmb_Catalogo.DataSource = Dt_Combo;
          Cmb_Catalogo.DisplayMember = "Descripcion";
          Cmb_Catalogo.ValueMember = "Value";
  
      }
  </code></pre>
  
  <p>Ok . I did it with the Enum Type parameterName but now Type = typeof ( Parameter ) does not recognize the name of the parameter and underlines it in red.</p>
  
  <pre><code>    public DataTable Cargar_Combo(Enum Parametro)
      {
          DataTable Dt_Referencia = new DataTable();
          Dt_Referencia.Columns.Add("Nombre");
          Dt_Referencia.Columns.Add("Descripcion");
          DataRow Dr_Referencia = Dt_Referencia.NewRow();
          IEnumerable&lt;string&gt; Resultado;
  
  
          Type Tipo = typeof(Parametro); //Here error mark , does not recognize the name of the parameter
          String[] Lista = Tipo.GetEnumNames();
  
          for (int i = 0; i &lt; Lista.Length; i++)
          {
  
              Resultado = Descripcion_Referencia((Parametro)Enum.Parse(typeof(Parametro), Lista[i]));
  
              Dr_Referencia = Dt_Referencia.NewRow();
              Dr_Referencia["Value"] = Lista[i];
              Dr_Referencia["Descripcion"] = Resultado.ElementAt(0);
              Dt_Referencia.Rows.Add(Dr_Referencia);
  
          }
      }
  </code></pre>
  
  <p>Thank you very much for your help. I served the last code I hope I have implemented appropriately, in time served but I have another problem .</p>
  
  <p>I have another method for the description of the enum value and the time to send the form does not accept conversion used with enum fixed .</p>
  
  <pre><code>  //Add this line&lt;Parametro_Referencia&gt;() where Parametro...
   public DataTable Carga_Referencias&lt;Parametro_Referencia&gt;() where Parametro_Referencia : struct, IConvertible 
      {
          DataTable Dt_Referencia = new DataTable();
          Dt_Referencia.Columns.Add("Nombre");
          Dt_Referencia.Columns.Add("Descripcion");
          DataRow Dr_Referencia = Dt_Referencia.NewRow();
          IEnumerable&lt;string&gt; Resultado;
  
  
          Type Tipo = typeof(Parametro_Referencia); //Here error mark , does not recognize the name of the parameter
          String[] Lista = Tipo.GetEnumNames();
  
          for (int i = 0; i &lt; Lista.Length; i++)
          {
  
  
              Resultado = Descripcion_Referencia((Parametro_Referencia)Enum.Parse(typeof(Parametro_Referencia), Lista[i]));
  
  
              Dr_Referencia = Dt_Referencia.NewRow();
              Dr_Referencia["Value"] = Lista[i];
              Dr_Referencia["Descripcion"] = Resultado.ElementAt(0);
              Dt_Referencia.Rows.Add(Dr_Referencia);
  
          }
  </code></pre>
  
  <p>in the line Resultado = Descripcion_Referencia((Parametro_Referencia)Enum.Parse(typeof(Parametro_Referencia), Lista[i])) I have a problem. doesn't recognaize this conversion.</p>
  
  <p>The metoho to get the description is that.</p>
  
  <pre><code>    private static IEnumerable&lt;string&gt; Descripcion_Referencia(Enum Referencia)
      {
          var Descripcion = new List&lt;string&gt;();
          var Tipo = Referencia.GetType();
          var Nombre = Enum.GetName(Tipo, Referencia);
          var Campo = Tipo.GetField(Nombre);
          var Campo_Descripcion = Campo.GetCustomAttributes(typeof(DescriptionAttribute), true);
          foreach (DescriptionAttribute Atributo in Campo_Descripcion)
          {
              Descripcion.Add(Atributo.Description);
          }
          return Descripcion;
      }
          return Dt_Referencia;
      }
  </code></pre>
  
  <p>You will know how to convert or correct shipping ?</p>