TL.EnumExtensionsLibrary
0.8.0
dotnet add package TL.EnumExtensionsLibrary --version 0.8.0
NuGet\Install-Package TL.EnumExtensionsLibrary -Version 0.8.0
<PackageReference Include="TL.EnumExtensionsLibrary" Version="0.8.0" />
<PackageVersion Include="TL.EnumExtensionsLibrary" Version="0.8.0" />
<PackageReference Include="TL.EnumExtensionsLibrary" />
paket add TL.EnumExtensionsLibrary --version 0.8.0
#r "nuget: TL.EnumExtensionsLibrary, 0.8.0"
#:package TL.EnumExtensionsLibrary@0.8.0
#addin nuget:?package=TL.EnumExtensionsLibrary&version=0.8.0
#tool nuget:?package=TL.EnumExtensionsLibrary&version=0.8.0
🏷️ TL.EnumExtensionsLibrary
Cached and safe enum extensions for .NET: fast attribute description lookup, key-value mappings, and reliable string parsing.
Extensões seguras e com cache para Enums no .NET: busca rápida de descrições por atributos, mapeamentos chave-valor e conversões confiáveis.
O TL.EnumExtensionsLibrary é uma biblioteca .NET BCL pura voltada para a manipulação produtiva e de alta performance de tipos enumerados (System.Enum), fornecendo cache thread-safe de metadados, suporte a descrições multicenário/chave ([EnumDescription]), conversão para dicionários e busca reversa.
📦 Instalação
Adicione o pacote ao seu projeto através do .NET CLI:
dotnet add package TL.EnumExtensionsLibrary
🚀 Funcionalidades Principais
| Método | Retorno | Descrição |
|---|---|---|
ToEnum<TEnum>(defaultValue, ignoreCase) |
TEnum |
Converte string para enum de forma segura com fallback sem disparar exceções. |
ToEnumOrNull<TEnum>(ignoreCase) |
TEnum? |
Converte string para enum anulável retornando null caso inválido. |
GetCachedDescriptions<TEnum>() |
IReadOnlyDictionary<TEnum, string> |
Retorna catálogo de descrições tipadas com cache estático thread-safe $O(1)$. |
GetDescription() |
string |
Retorna a descrição do atributo [Description] com cache estático thread-safe $O(1)$ ou o nome do enum. |
GetDescription(key) |
string |
Retorna a descrição associada a uma chave específica mapeada via [EnumDescription(key, description)]. |
GetDescription(key, default) |
string |
Retorna a descrição para a chave especificada ou o valor padrão caso a chave não exista. |
ToDictionary<T>() |
IDictionary<int, string> |
Converte o enum em um dicionário (Id -> Nome) para preenchimento de combos e selects. |
GetAllDescriptions<T>() |
Dictionary<T, string> |
Retorna um dicionário mapeando cada valor enumerado para sua respectiva descrição. |
GetValues<T>() |
IList<T> |
Retorna uma lista tipada contendo todos os valores definidos no enum. |
GetNames<T>() |
IList<string> |
Retorna uma lista contendo todos os nomes literais dos identificadores do enum. |
GetEnumByDescription<T>(desc) |
T |
Realiza a busca reversa, localizando o valor do enum a partir de sua descrição textual. |
TryParse<T>(str, out result) |
bool |
Realiza o parse seguro de texto para o valor enumerado correspondente. |
HasFlag<T>(flag) |
bool |
Verifica se um determinado bit/flag está ativo no enum decorado com [Flags]. |
💡 Exemplos de Uso
using System;
using System.ComponentModel;
using EnumExtensionsLibrary;
public enum StatusPedido
{
[Description("Aguardando Pagamento")]
[EnumDescription(1, "Aguardando Confirmação Bancária")]
[EnumDescription(2, "Em Processamento no Gateway")]
Pendente,
[Description("Pedido Faturado")]
Faturado,
[Description("Cancelado pelo Cliente")]
Cancelado
}
public class Exemplo
{
public void Executar()
{
var status = StatusPedido.Pendente;
var resolvido = "faturado".ToEnum(StatusPedido.Pendente);
var opcional = "inexistente".ToEnumOrNull<StatusPedido>();
var catalogo = EnumExtension.GetCachedDescriptions<StatusPedido>();
string descPadrao = status.GetDescription();
string descGateway = status.GetDescription(2);
var opcoes = EnumExtension.ToDictionary<StatusPedido>();
var encontrado = EnumExtension.GetEnumByDescription<StatusPedido>("Pedido Faturado");
}
}
🏛️ Decisões Arquiteturais
Para detalhes sobre o cache thread-safe de metadados, suporte a múltiplos atributos e resolução graciosa de descrições, consulte:
📄 Licença
Distribuído sob a licença MIT.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
| .NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- No dependencies.
-
net8.0
- No dependencies.
NuGet packages (1)
Showing the top 1 NuGet packages that depend on TL.EnumExtensionsLibrary:
| Package | Downloads |
|---|---|
|
TL.ExtensionLibrary.Domain
Clean Architecture Domain metapackage: pure, high-performance domain extensions (String, Numeric, DateTime, Enum, Collection) with zero external infrastructure dependencies. |
GitHub repositories
This package is not used by any popular GitHub repositories.