我想将LaunchDarkly特性管理添加到我的.net核心api.In中,这是一个实时项目,如何添加呢?
我有一个接口文件与所有的features.How将是这个接口参加LD调用?
我很困惑如何为配置创建一个通用文件,并调用不同的控制器!任何帮助都将不胜感激!
我在我的样本程序中所做的。
配置ldConfig = LaunchDarkly.Client.Configuration // TODO:在这里输入LaunchDarkly SDK键.Default("YOUR_SDK_KEY");LdClient client =新LdClient(ldConfig);User = User.Builder("bob@example.com") .FirstName("Bob") .LastName("Loblaw") .Custom("groups","beta_testers") .Build() .Build();// TODO:在此处输入功能标志键的键var value = client.BoolVariation("YOUR_FEATURE_FLAG_KEY",user,false);if (值){Console.WriteLine(“为用户显示功能”+ user.Key);}user.Key{Console.WriteLine(“未为用户显示功能”+ user.Key);}
但是现在我有了一个具有大量代码行的实时api项目,多个controllers.How可以使这个LD类泛化吗?请帮助me..thanks
发布于 2021-04-28 17:17:51
首先,在appsettings.json中声明密钥。然后创建一个接口类来声明所需的方法。
public interface IFeatureFlagsService
{
T GetFeatureFlag<T>(string flagKey, string userKey);
}现在实现这个接口
using LaunchDarkly.Client;
public class FeatureFlagsService : IFeatureFlagsService
{
private readonly LdClient _ldClient;
public FeatureFlagsService(IConfiguration configuration)
{
_ldClient = new LdClient(configuration["LaunchDarkly:Key"]);
}
public T GetFeatureFlag<T>(string flagKey, string userKey = "anonymous")
{
var user = User.WithKey(userKey);
if (typeof(T).Equals(typeof(bool)))
return (T)(object)_ldClient.BoolVariation(flagKey, user, default);
else if (typeof(T).Equals(typeof(int)))
return (T)(object)_ldClient.IntVariation(flagKey, user, default);
else if (typeof(T).Equals(typeof(float)))
return (T)(object)_ldClient.FloatVariation(flagKey, user, default);
else if (typeof(T).Equals(typeof(string)))
return (T)(object)_ldClient.StringVariation(flagKey, user, default);
return default;
}
}确保在startup.cs中注入配置
services.AddSingleton<IFeatureFlagsService>(sp => new FeatureFlagsService(configuration));现在您可以将这个IFeatureFlagService插入到控制器中,并调用如下所示
_featureFlagService.GetFeatureFlag<bool>("isExternalUser");https://stackoverflow.com/questions/65341819
复制相似问题