.Net SDK usage
Install dependencies
The first things we will do is install the Open Feature SDK and the GO Feature Flag provider.
- .NET CLI
- Package Manager
- Package Reference
- Packet cli
- Cake
dotnet add package OpenFeature.Contrib.GOFeatureFlag
NuGet\Install-Package OpenFeature.Contrib.GOFeatureFlag
<PackageReference Include="OpenFeature.Contrib.GOFeatureFlag" />
paket add OpenFeature.Contrib.GOFeatureFlag
// Install OpenFeature.Contrib.GOFeatureFlag as a Cake Addin
#addin nuget:?package=OpenFeature.Contrib.GOFeatureFlag
// Install OpenFeature.Contrib.GOFeatureFlag as a Cake Tool
#tool nuget:?package=OpenFeature.Contrib.GOFeatureFlag
Initialize your Open Feature client
To evaluate the flags you need to have an Open Feature configured in you app. This code block shows you how you can create a client that you can use in your application.
- C#
using OpenFeature;
using OpenFeature.Contrib.GOFeatureFlag;
// ...
var goFeatureFlagProvider = new GoFeatureFlagProvider(new GoFeatureFlagProviderOptions
{
Endpoint = "http://localhost:1031/",
Timeout = new TimeSpan(1000 * TimeSpan.TicksPerMillisecond)
});
Api.Instance.SetProvider(goFeatureFlagProvider);
var client = Api.Instance.GetClient("my-app");
Evaluate your flag
This code block explain how you can create an EvaluationContext
and use it to evaluate your flag.
note
In this example we are evaluating a boolean
flag, but other types are also available.
Refer to the Open Feature documentation to know more about it.
- C#
// Context of your flag evaluation.
// With GO Feature Flag you MUST have a targetingKey that is a unique identifier of the user.
var userContext = EvaluationContext.Builder()
.Set("targetingKey", "1d1b9238-2591-4a47-94cf-d2bc080892f1") // user unique identifier (mandatory)
.Set("firstname", "john")
.Set("lastname", "doe")
.Set("email", "john.doe@gofeatureflag.org")
.Set("admin", true) // this field is used in the targeting rule of the flag "flag-only-for-admin"
.Set("anonymous", false)
.Build();
var adminFlag = await client.GetBooleanValue("flag-only-for-admin", false, userContext);
if (adminFlag) {
// flag "flag-only-for-admin" is true for the user
} else {
// flag "flag-only-for-admin" is false for the user
}
Contribute to the provider
You can find the source of the provider in the open-feature/dotnet-sdk-contrib
repository.