TL.EnumExtensionsLibrary 0.8.0

dotnet add package TL.EnumExtensionsLibrary --version 0.8.0
                    
NuGet\Install-Package TL.EnumExtensionsLibrary -Version 0.8.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="TL.EnumExtensionsLibrary" Version="0.8.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="TL.EnumExtensionsLibrary" Version="0.8.0" />
                    
Directory.Packages.props
<PackageReference Include="TL.EnumExtensionsLibrary" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add TL.EnumExtensionsLibrary --version 0.8.0
                    
#r "nuget: TL.EnumExtensionsLibrary, 0.8.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package TL.EnumExtensionsLibrary@0.8.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=TL.EnumExtensionsLibrary&version=0.8.0
                    
Install as a Cake Addin
#tool nuget:?package=TL.EnumExtensionsLibrary&version=0.8.0
                    
Install as a Cake Tool

🏷️ TL.EnumExtensionsLibrary

NuGet .NET License: MIT

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 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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • .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.

Version Downloads Last Updated
0.8.0 200 10/1/2026
0.7.0 194 9/26/2026
0.6.0 193 9/22/2026
0.5.0 202 9/16/2026
0.4.2 190 9/16/2026
0.4.1 204 9/11/2026
0.4.0 229 9/6/2026
0.3.0 121 9/6/2026
0.2.0 117 9/5/2026
0.1.0 116 9/4/2026
0.0.3 205 10/24/2024
0.0.2 170 10/17/2024
0.0.1 174 10/16/2024