Example usage of the C# SDK
Code example of how to use the Optimizely Feature Experimentation C# SDK to evaluate feature flags, activate A/B tests, or feature tests.
Once you have installed an SDK, import the Optimizely Feature Experimentation library into your code, get your Optimizely Feature Experimentation project's datafile, and instantiate a client. Then, you can use the client to evaluate flag rules, including A/B tests and flag deliveries.
This example demonstrates the basic usage of each of these concepts:
-
Evaluate a flag with the key
product_sort
using the Decide method. As a side effect, the Decide function also sends a decision event to Optimizely Feature Experimentation to record that the current user has been exposed to the experiment. -
Conditionally execute your feature code. You have a couple of options:
- Fetch the flag enabled state, then check a configuration variable on the flag called
sort_method
. The SDK evaluates your flag rules and determines what flag variation the user is in, and therefore which sort method variable they should see. - Fetch on the flag variation, then run 'control' or 'treatment' code.
- Use event tracking to track an event called
purchased
. This conversion event measures the impact of an experiment. Using the Track Event method, the purchase is automatically attributed back to the running A/B test for which we made a decision, and the SDK sends a network request to Optimizely Feature Experimentation using the customizable event dispatcher so Optimizely can count it in your results page.
//Import Optimizely SDK
using OptimizelySDK;
using OptimizelySDK.Entity;
// Instantiate an Optimizely client
var optimizely = OptimizelyFactory.NewDefaultInstance("YOUR_SDK_KEY");
// Set custom user attributes
var attributes = new UserAttributes
{
{ "logged_in", true }
};
// Create a user context
var user = optimizely.CreateUserContext("user123", attributes);
var decision = user.Decide("product_sort");
// Execute code based on decision's variation key
if (string.IsNullOrEmpty(decision.VariationKey)) {
Console.WriteLine("decision error: " + string.Join(" ", decision.Reasons));
} else if (decision.VariationKey == "control") {
Console.WriteLine("control variation");
} else if (decision.VariationKey == "treatment") {
Console.WriteLine("treatment variation");
} else {
// Unknown variation
}
// Execute code based on flag enabled state
if (decision.Enabled) {
var sortMethod = decision.Variables.ToDictionary()["sort_method"];
Console.WriteLine($"sort_method: {sortMethod}");
}
// Track an event
user.TrackEvent("purchased");
Updated 10 months ago