Convertir Enum a String en C#

Muhammad Maisam Abbas 12 octubre 2023
  1. Convierta Enum a String con el atributo Description en C#
  2. Convierta Enum a String con la instrucción switch en C#
Convertir Enum a String en C#

Este tutorial discutirá los métodos para convertir una enumeración en una cadena en C#.

Convierta Enum a String con el atributo Description en C#

No tenemos que usar nada para convertirlo en una cadena para un valor Enum simple que siga las convenciones de nomenclatura. Se puede mostrar al usuario con la función Console.WriteLine() en C#. Se demuestra en el siguiente ejemplo de codificación.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace enum_to_string {
  public enum Status { InProgress, Completed }
  class Program {
    static void Main(string[] args) {
      Status complete = Status.Completed;
      Console.WriteLine(complete);
    }
  }
}

Producción :

Completed

En el código anterior, imprimimos directamente el valor de enumeración Completado en formato de cadena en C#. Esto fue posible porque nuestro valor Enum siguió las convenciones de nomenclatura de variables en C#. Pero si queremos mostrar una cadena fácil de leer, tenemos que usar el atributo Description de Enums en C#. El atributo Description se utiliza para describir cada valor de una enumeración. Podemos convertir nuestra Enum en una cadena de fácil lectura escribiendo la cadena dentro del atributo Description de la Enum. El siguiente ejemplo de código nos muestra cómo convertir un valor Enum en una cadena con el atributo Description en C#.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Reflection;

namespace enum_to_string {
  public enum Status {
    [Description("The Desired Task is InProgress")] InProgress,
    [Description("The Desired Task is Successfully Completed")] Completed
  }
  static class extensionClass {
    public static string getDescription(this Enum e) {
      Type eType = e.GetType();
      string eName = Enum.GetName(eType, e);
      if (eName != null) {
        FieldInfo fieldInfo = eType.GetField(eName);
        if (fieldInfo != null) {
          DescriptionAttribute descriptionAttribute = Attribute.GetCustomAttribute(
              fieldInfo, typeof(DescriptionAttribute)) as DescriptionAttribute;
          if (descriptionAttribute != null) {
            return descriptionAttribute.Description;
          }
        }
      }
      return null;
    }
  }
  class Program {
    static void Main(string[] args) {
      Status complete = Status.Completed;
      string description = complete.getDescription();
      Console.WriteLine(description);
    }
  }
}

Producción :

The Desired Task is Successfully Completed

En el código anterior, creamos un método de extensión, getDescription, que devuelve la descripción del valor Enum en C#. Este método funciona perfectamente bien, pero es un poco complejo. Esta complejidad se simplifica en la siguiente sección.

Convierta Enum a String con la instrucción switch en C#

Gran parte de la complejidad del método anterior se puede simplificar utilizando la declaración switch en C#. Podemos asignar el valor deseado a nuestra variable de cadena para cada valor Enum con la declaración switch en C#. Vea el siguiente ejemplo de código.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Reflection;

namespace enum_to_string {
  public enum Status { InProgress, Completed }
  static class extensionClass {
    public static string getValue(this Status e) {
      switch (e) {
        case Status.InProgress:
          return "The Desired Task is InProgress";
        case Status.Completed:
          return "The Desired Task is Successfully Completed";
      }
      return String.Empty;
    }
  }
  class Program {
    static void Main(string[] args) {
      Status complete = Status.Completed;
      string value = complete.getValue();
      Console.WriteLine(value);
    }
  }
}

Producción :

The Desired Task is Successfully Completed

En el código anterior, creamos un método de extensión, getValue(), que devuelve una cadena basada en el valor Enum usando la declaración switch en C#. La función getValue() usa la declaración switch y devuelve una cadena diferente para cada valor de nuestro Enum especificado.

Muhammad Maisam Abbas avatar Muhammad Maisam Abbas avatar

Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.

LinkedIn

Artículo relacionado - Csharp Enum

Artículo relacionado - Csharp String