Converter Enum em String em C#
-
Converter Enum em String com o atributo
Description
emC#
-
Converta Enum em String com a instrução
switch
emC#
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.
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.
LinkedInArtigo relacionado - Csharp Enum
- C# Converter String em Enum
- Converter Int em Enum em C#
- Strings Enum em C#
- Como Enumerar um Enum em C#
- Como Obter Valor Intensivo do Enum em C#