[Tip] Come convertire una stringa in un enumerativo

Mi piace molto usare gli enum per dare pulizia al codice e non rischiare di commettere errori. Ma quando bisogna convertire una stringa in un enum che fare? Come al solito ci viene in aiuto il buon framework .Net. Fingiamo di avere un enumerativo che elenca le marche di alcune automobili

   1: public enum CarMakes
   2:     {
   3:         BMW,
   4:         Ford,
   5:         GeneralMotors,
   6:         GruppoFiat,
   7:         Honda,
   8:         Hyundai,
   9:         KiaMotors,
  10:         Mazda,
  11:         Mitsubishi,
  12:         Nissan,
  13:         Renault,
  14:         Suzuki,
  15:         Toyota,
  16:         Volkswagen,
  17:     }

E mi viene data la marca “Ford” come posso convertirla nel enumerativo CarMakes.Ford ?

   1: object Enum.Parse(System.Type enumType, string value, bool ignoreCase)

Questo sembra proprio fare al caso nostro

   1: CarMakes makes = (CarMakes) Enum.Parse(typeof(CarMakes), "Ford", true)

Ma se non siamo sicuri che possa esistere? Nulla di male

   1: var makeNotExist = "SonnyMake";
   2:            if (Enum.IsDefined(typeof(CarMakes), makeNotExist))
   3:            {
   4:                CarMakes makes = (CarMakes)Enum.Parse(typeof(CarMakes), makeNotExist, true);
   5:                Console.WriteLine(makes);
   6:            }
   7:            else
   8:                Console.WriteLine("Ops Error!");

Be la prossima volta mi compro una casa automobilistica così sono sicuro. ;)

Sonny