C3i.GerenciadorFeatureFlag 1.0.0

dotnet add package C3i.GerenciadorFeatureFlag --version 1.0.0                
NuGet\Install-Package C3i.GerenciadorFeatureFlag -Version 1.0.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="C3i.GerenciadorFeatureFlag" Version="1.0.0" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add C3i.GerenciadorFeatureFlag --version 1.0.0                
#r "nuget: C3i.GerenciadorFeatureFlag, 1.0.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.
// Install C3i.GerenciadorFeatureFlag as a Cake Addin
#addin nuget:?package=C3i.GerenciadorFeatureFlag&version=1.0.0

// Install C3i.GerenciadorFeatureFlag as a Cake Tool
#tool nuget:?package=C3i.GerenciadorFeatureFlag&version=1.0.0                

Gerenciador de Feature Flags

NuGet Build Status

Uma biblioteca simples e flexível para gerenciar feature flags em projetos .NET. Suporta configuração via appsettings.json ou diretamente em memória usando um Dictionary.


📦 Instalação

Via NuGet

Instale o pacote via NuGet Package Manager:

dotnet add package GerenciadorFeatureFlags

Manualmente

Clone o repositório e adicione o projeto como referência.

🚀 Como Usar

A biblioteca oferece dois provedores principais para gerenciar feature flags: 1. AppSettingsFeatureFlagProvider: Gerencia feature flags configuradas no appsettings.json. 2. InMemoryFeatureFlagProvider: Gerencia feature flags configuradas em um Dictionary.

  1. Usando o AppSettingsFeatureFlagProvider

Passo 1: Configurar o appsettings.json

Adicione as feature flags no arquivo appsettings.json:

{
  "FeatureFlags": {
    "NovaFuncionalidade": true,
    "FuncionalidadeBeta": false
  }
}

Passo 2: Usar o provedor no código

Configure e use o provedor para verificar se as feature flags estão habilitadas:

using FeatureFlags;
using Microsoft.Extensions.Configuration;

var configuration = new ConfigurationBuilder()
    .AddJsonFile("appsettings.json")
    .Build();

var featureFlagProvider = new AppSettingsFeatureFlagProvider(configuration);

// Verificar se uma feature está habilitada
bool isEnabled = featureFlagProvider.IsFeatureEnabled("NovaFuncionalidade");
Console.WriteLine($"NovaFuncionalidade está habilitada? {isEnabled}");

Passo 3: Usar lógica personalizada (opcional)

bool isEnabledWithLogic = featureFlagProvider.IsFeatureEnabled("NovaFuncionalidade", () =>
{
    // Exemplo: habilitar somente antes das 12h
    return DateTime.Now.Hour < 12;
});
Console.WriteLine($"NovaFuncionalidade habilitada com lógica? {isEnabledWithLogic}");
  1. Usando o InMemoryFeatureFlagProvider

Passo 1: Configurar o Dictionary

Crie um Dictionary com as feature flags:

var featureFlags = new Dictionary<string, bool>
{
    { "NovaFuncionalidade", true },
    { "FuncionalidadeBeta", false }
};

var featureFlagProvider = new InMemoryFeatureFlagProvider(featureFlags);

Passo 2: Usar o provedor no código

// Verificar se uma feature está habilitada
bool isEnabled = featureFlagProvider.IsFeatureEnabled("NovaFuncionalidade");
Console.WriteLine($"NovaFuncionalidade está habilitada? {isEnabled}");

Passo 3: Usar lógica personalizada (opcional)

bool isEnabledWithLogic = featureFlagProvider.IsFeatureEnabled("NovaFuncionalidade", () =>
{
    // Exemplo: habilitar somente aos domingos
    return DateTime.Now.DayOfWeek == DayOfWeek.Sunday;
});
Console.WriteLine($"NovaFuncionalidade habilitada com lógica? {isEnabledWithLogic}");

🛠 Funcionalidades Planejadas • Suporte a persistência em banco de dados. • Interface de gerenciamento via API. • Rollouts progressivos (habilitar para porcentagem de usuários).

🤝 Contribuindo

Contribuições são bem-vindas! Sinta-se à vontade para abrir issues e enviar pull requests. 1. Faça o fork do repositório. 2. Crie uma branch para sua funcionalidade: git checkout -b minha-funcionalidade. 3. Envie suas alterações: git push origin minha-funcionalidade.

📜 Licença

Este projeto está licenciado sob a Licença MIT. Veja o arquivo LICENSE para mais detalhes.

Product Compatible and additional computed target framework versions.
.NET net9.0 is compatible.  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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
1.0.0 117 12/22/2024