Converter Enum em String em C#

Muhammad Maisam Abbas 12 outubro 2023
  1. Converter Enum em String com o atributo Description em C#
  2. Converta Enum em String com a instrução switch em C#
Converter Enum em String em C#

Este tutorial discutirá os métodos para converter um enum em uma string em C#.

Converter Enum em String com o atributo Description em C#

Não precisamos usar nada para convertê-lo em uma string para um valor Enum simples que segue as convenções de nomenclatura. Ele pode ser exibido para o usuário com a função Console.WriteLine() em C#. Isso é demonstrado no exemplo de codificação abaixo.

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);
    }
  }
}

Resultado:

Completed

No código acima, imprimimos diretamente o valor Enum Completed em formato de string em C#. Isso foi possível porque nosso valor Enum seguia as convenções de nomenclatura de variáveis ​​em C#. Mas se quisermos exibir uma string de fácil leitura, temos que usar o atributo Description de Enums em C#. O atributo Description é usado para descrever cada valor de um Enum. Podemos converter nosso Enum em uma string de fácil leitura, escrevendo a string dentro do atributo Description do Enum. O exemplo de código a seguir nos mostra como converter um valor Enum em uma string com o atributo Description em 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);
    }
  }
}

Resultado:

The Desired Task is Successfully Completed

No código acima, criamos um método de extensão, getDescription, que retorna a descrição do valor Enum em C#. Este método funciona perfeitamente bem, mas é um pouco complexo. Essa complexidade é simplificada na próxima seção.

Converta Enum em String com a instrução switch em C#

Muita complexidade do método anterior pode ser simplificada usando a instrução switch em C#. Podemos atribuir o valor desejado à nossa variável de string para cada valor Enum com a instrução switch em C#. Veja o seguinte exemplo 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);
    }
  }
}

Resultado:

The Desired Task is Successfully Completed

No código acima, criamos um método de extensão, getValue(), que retorna uma string com base no valor Enum usando a instrução switch em C#. A função getValue() usa a instrução switch e retorna uma string diferente para cada valor de nosso 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

Artigo relacionado - Csharp Enum

Artigo relacionado - Csharp String