C3i.GerenciadorFeatureFlag
1.0.0
dotnet add package C3i.GerenciadorFeatureFlag --version 1.0.0
NuGet\Install-Package C3i.GerenciadorFeatureFlag -Version 1.0.0
<PackageReference Include="C3i.GerenciadorFeatureFlag" Version="1.0.0" />
paket add C3i.GerenciadorFeatureFlag --version 1.0.0
#r "nuget: C3i.GerenciadorFeatureFlag, 1.0.0"
// 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
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.
- 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}");
- 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 | Versions 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. |
-
net9.0
- Microsoft.Extensions.Configuration (>= 9.0.0)
- Microsoft.Extensions.Configuration.Json (>= 9.0.0)
- Microsoft.Extensions.DependencyInjection (>= 9.0.0)
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 |