c# - LaunchDarkly - 如何添加到 IConfiguration - .NET 5.0
问题描述
我使用 FeatureFlagService 类并使用如下的依赖注入将 LaucnhDarkly 集成到我的 .NET 5 代码中。
services.AddSingleton<IFeatureFlagsService>(sp => new FeatureFlagsService(configuration));
在 FeatureFlagsService.cs 中,
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;
}
}
在任何控制器中,我通过构造函数注入 IFeatureFlagsService 并使用如下
_featureFlagService.GetFeatureFlag<bool>("externalUsersAllowed");
现在我想取出这个 featureflagservice.cs 并将 LaunchDarkly 添加到现有的 IConfiguration 并使用
_configuation.GetValue<bool>("externalUsersAllowed")
我怎样才能做到这一点?您的帮助将不胜感激。
解决方案
您需要通过实现来实现自定义配置提供程序,IConfigurationSource
以便通过配置对象、IOptions 等访问它们
本文提供了如何执行此操作的示例: https ://docs.microsoft.com/en-us/dotnet/core/extensions/custom-configuration-provider
推荐阅读
- python - 总 .npz 文件的大小比单个元素大得多
- javascript - Javascript检测窗口内的点击区域并关闭元素
- java - 从 for(Particle p:particle) 循环中的 ArrayList 中删除元素
- python - 复制和粘贴输入的问题 - 粘贴的输入仅采用第一个值
- java - 创建一个中位数数组。爪哇
- rabbitmq - Windows Server 2016 上的 RabbitMQ 无法识别 rabbitmq.conf
- java - WebFlux:如何使用 takeUntilOther() 方法?
- javascript - NextJS SSR 可以与 Apollo 客户端一起使用吗?在第一次加载页面时检查“查看页面源代码”时,我看不到我的 HTML
- git - Jenkins通过Git Plugin(Remote Repo Bitbucket)拉取子模块时报告权限失败
- php - 通过具有指定键的其他数组解析多维数组