.NET Provider
Get Started
An OpenFeature Provider is a pluggable integration layer that connects the OpenFeature SDK to a specific feature flag management system (e.g., VWO or custom in-house solutions). OpenFeature is an open-source standard for feature flagging, designed to provide a vendor-agnostic approach, enabling organizations to switch between feature flagging tools without rewriting application code.
This VWO OpenFeature Provider for .NET helps you integrate Feature Experimentation systems into your .NET-based server applications.
Check this out
Check this out
Check this out
Check this out
NoteThis library is intended to be used in server-side contexts and has not been evaluated for use on mobile devices.
Requirements
.NET 6.0+
SDK Installation
using OpenFeature;
using OpenFeature.Model;
using VWOOpenFeatureProvider;
using VWOFmeSdk;
using VWOFmeSdk.Models.User;
static async Task Main(string[] args)
{
var vwoInitOptions = new VWOInitOptions
{
SdkKey = "your-sdk-key-here", // Replace with your SDK Key
AccountId = 123456, // Replace with your VWO Account ID
Logger = new Dictionary<string, object>
{
{ "level", "ERROR" } // Logging level
}
};
// Initialize the VWO client
var vwoClient = VWO.Init(vwoInitOptions);
// Initialize the VWO Provider
var vwoProvider = new VWOProvider(vwoClient);
// Get the client from OpenFeature API
var client = Api.Instance.GetClient();
// Test feature flags with variable key values
await TestFlags();
}
static async Task TestFlags(FeatureClient client, EvaluationContext context)
{
// Setting up the EvaluationContext
var context = EvaluationContext.Builder()
.Set("targetingKey", new Value("user-id"))
.Set("key", new Value("variable-key")) // Replace with your variable key
.Build();
// Set the provider using OpenFeature API
await Api.Instance.SetProviderAsync(vwoProvider);
// Test boolean flag
var boolResult = await client.GetBooleanValueAsync("feature-boolean", false, context);
Console.WriteLine($"BOOL result: {boolResult}");
// Test string flag
var stringResult = await client.GetStringValueAsync("feature-string", "defaultString", context);
Console.WriteLine($"STRING result: {stringResult}");
// Test integer flag
var intResult = await client.GetIntegerValueAsync("feature-integer", 0, context);
Console.WriteLine($"INTEGER result: {intResult}");
// Test float flag
var floatResult = await client.GetDoubleValueAsync("feature-float", 0.0, context);
Console.WriteLine($"FLOAT result: {floatResult}");
// Test object flag
var objectResult = await client.GetObjectValueAsync("feature-object", new Value(new Structure(new Dictionary<string, Value>())), context);
Console.WriteLine($"OBJECT result: {objectResult}");
}Usage
using OpenFeature;
using OpenFeature.Model;
using VWOOpenFeatureProvider;
using VWOFmeSdk;
using VWOFmeSdk.Models.User;
static async Task Main(string[] args)
{
var vwoInitOptions = new VWOInitOptions
{
SdkKey = "your-sdk-key-here", // Replace with your SDK Key
AccountId = 123456, // Replace with your VWO Account ID
Logger = new Dictionary<string, object>
{
{ "level", "ERROR" } // Logging level
}
};
// Initialize the VWO client
var vwoClient = VWO.Init(vwoInitOptions);
// Initialize the VWO Provider
var vwoProvider = new VWOProvider(vwoClient);
// Get the client from OpenFeature API
var client = Api.Instance.GetClient();
// Test feature flags with variable key values
await TestFlags();
}
static async Task TestFlags(FeatureClient client, EvaluationContext context)
{
// Setting up the EvaluationContext
var context = EvaluationContext.Builder()
.Set("targetingKey", new Value("user-id"))
.Set("key", new Value("variable-key")) // Replace with your variable key
.Build();
// Set the provider using OpenFeature API
await Api.Instance.SetProviderAsync(vwoProvider);
// Test boolean flag
var boolResult = await client.GetBooleanValueAsync("feature-boolean", false, context);
Console.WriteLine($"BOOL result: {boolResult}");
// Test string flag
var stringResult = await client.GetStringValueAsync("feature-string", "defaultString", context);
Console.WriteLine($"STRING result: {stringResult}");
// Test integer flag
var intResult = await client.GetIntegerValueAsync("feature-integer", 0, context);
Console.WriteLine($"INTEGER result: {intResult}");
// Test float flag
var floatResult = await client.GetDoubleValueAsync("feature-float", 0.0, context);
Console.WriteLine($"FLOAT result: {floatResult}");
// Test object flag
var objectResult = await client.GetObjectValueAsync("feature-object", new Value(new Structure(new Dictionary<string, Value>())), context);
Console.WriteLine($"OBJECT result: {objectResult}");
}API Details
API | Arguments | Argument Description | API Description |
|---|---|---|---|
|
|
| Initializes the VWO client with the provided SDK key, account ID, and logging options. |
|
|
| Creates a new instance of |
| None | Returns an OpenFeature client instance that is used for feature flag evaluations. | |
| None | Creates a builder instance to construct an | |
|
|
| Sets a key-value pair inside the evaluation context. |
| None | Finalizes the | |
|
|
| Asynchronously sets the provider for OpenFeature, enabling it to evaluate feature flags using VWO. |
|
|
| Asynchronously fetches the boolean value of a feature flag. |
|
|
| Asynchronously fetches the string value of a feature flag. |
|
|
| Asynchronously fetches the integer value of a feature flag. |
|
|
| Asynchronously fetches the float value of a feature flag. |
|
|
| Asynchronously fetches the object value of a feature flag. |
Updated 4 months ago
