OpenFeature Provider for .NET
Getting started
1. Install the provider
- Powershell / NuGet Package Manager Console
- .NET CLI
- Package Reference
Install-Package OpenFeature.Contrib.Providers.ConfigCat
dotnet add package OpenFeature.Contrib.Providers.ConfigCat
<PackageReference Include="OpenFeature.Contrib.Providers.ConfigCat" />
2. Initialize the provider
The ConfigCatProvider
constructor takes the SDK key and an optional ConfigCatClientOptions
argument containing the additional configuration options for the ConfigCat .NET SDK:
using OpenFeature.Contrib.Providers.ConfigCat;
// Build options for the ConfigCat SDK.
var options = new ConfigCatClientOptions
{
PollingMode = PollingModes.AutoPoll(pollInterval: TimeSpan.FromSeconds(60));
Logger = new ConsoleLogger(LogLevel.Warning);
// ...
};
// Configure the provider.
OpenFeature.Api.Instance.SetProvider(new ConfigCatProvider("#YOUR-SDK-KEY#", options));
// Create a client.
var client = OpenFeature.Api.Instance.GetClient();
For more information about all the configuration options, see the .NET SDK documentation.
3. Evaluate your feature flag
var isAwesomeFeatureEnabled = await client.GetBooleanValueAsync("isAwesomeFeatureEnabled", false);
if(isAwesomeFeatureEnabled)
{
doTheNewThing();
}
else
{
doTheOldThing();
}
Evaluation Context
An evaluation context in the OpenFeature specification is a container for arbitrary contextual data that can be used as a basis for feature flag evaluation. The ConfigCat provider translates these evaluation contexts to ConfigCat User Objects.
The following table shows how the different context attributes are mapped to User Object attributes.
Evaluation context | User Object | Required |
---|---|---|
Id /Identifier | Identifier | ☑ |
Email | Email | |
Country | Country | |
Any other | Custom |
To evaluate feature flags for a context, use the OpenFeature Evaluation API:
var context = new EvaluationContext()
.Set("Id", "#SOME-USER-ID#")
.Set("Email", "[email protected]")
.Set("Country", "CountryID")
.Set("Rating", 4.5)
.Set("RegisteredAt", DateTime.Parse("2023-11-22 12:34:56 +00:00", CultureInfo.InvariantCulture))
.Build();
var isAwesomeFeatureEnabled = await client.GetBooleanValueAsync("isAwesomeFeatureEnabled", false, context);