.NET SDK
Installation
dotnet add package Vexil
Quick Start
using Vexil;
// From environment variables
using var client = new VexilClient(new EnvProvider());
var darkMode = client.Bool("dark-mode", false);
var rateLimit = client.Int("api-rate-limit", 100);
var banner = client.String("banner-text", "Welcome");
Console.WriteLine($"dark-mode={darkMode} rate-limit={rateLimit} banner={banner}");
Providers
Environment Variables
using var client = new VexilClient(new EnvProvider());
Sidecar
using var client = new VexilClient(new SidecarProvider("http://localhost:8514"));
ConfigMap
using var client = new VexilClient(new ConfigMapProvider("/etc/vexil"));
ASP.NET Core Dependency Injection
Register Vexil in Program.cs:
// Choose one provider:
builder.Services.AddVexilEnv(); // Environment variables
builder.Services.AddVexilSidecar(); // Sidecar API
builder.Services.AddVexilConfigMap(); // Mounted ConfigMap
// Inject in your services:
public class MyService(VexilClient vexil)
{
public void DoWork()
{
if (vexil.Bool("dark-mode"))
EnableDarkMode();
var limit = vexil.Int("api-rate-limit", 100);
}
}
API
| Method | Signature | Description |
|---|---|---|
Bool | Bool(name, defaultValue = false) -> bool | Get boolean flag |
String | String(name, defaultValue = "") -> string | Get string flag |
Int | Int(name, defaultValue = 0) -> int | Get integer flag |
Double | Double(name, defaultValue = 0) -> double | Get double flag |
Json<T> | Json<T>(name) -> T? | Deserialize JSON flag |
GetFlag | GetFlag(name) -> Flag? | Get raw flag |
GetAllFlags | GetAllFlags() -> IReadOnlyList<Flag> | List all flags |
Flag Model
public class Flag
{
public string Name { get; set; }
public string Type { get; set; } // "boolean", "string", "integer", "json"
public string Value { get; set; }
public bool Disabled { get; set; }
}
Custom Provider
public interface IFlagProvider : IDisposable
{
Flag? GetFlag(string name);
IReadOnlyList<Flag> GetAllFlags();
}