-
Notifications
You must be signed in to change notification settings - Fork 127
Expand file tree
/
Copy pathProgram.cs
More file actions
40 lines (34 loc) · 1.46 KB
/
Program.cs
File metadata and controls
40 lines (34 loc) · 1.46 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
// Copyright (c) Microsoft Corporation.
// Licensed under the MIT license.
//
using Microsoft.FeatureManagement;
using Microsoft.FeatureManagement.FeatureFilters;
using ParameterObjectConsoleApp;
//
// Create a feature manager using a custom definition provider
// that supplies targeting filter settings directly via ParametersObject.
var featureManager = new FeatureManager(new InMemoryFeatureDefinitionProvider())
{
FeatureFilters = new List<IFeatureFilterMetadata> { new ContextualTargetingFilter() }
};
//
// Simulate evaluating the "Beta" feature for different users
var users = new List<(string UserId, List<string> Groups)>
{
("Jeff", new List<string> { "TeamMembers" }), // Targeted by user name
("Anne", new List<string> { "Management" }), // Targeted by user name
("Sam", new List<string> { "Management" }), // Targeted by group (100% rollout)
("Alice", new List<string> { "TeamMembers" }), // May be targeted by group (45% rollout)
("Bob", new List<string> { "External" }) // Only targeted by default rollout (20%)
};
foreach (var (userId, groups) in users)
{
const string FeatureName = "Beta";
var targetingContext = new TargetingContext
{
UserId = userId,
Groups = groups
};
bool enabled = await featureManager.IsEnabledAsync(FeatureName, targetingContext);
Console.WriteLine($"The {FeatureName} feature is {(enabled ? "enabled" : "disabled")} for the user '{userId}'.");
}