首页 > 解决方案 > 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")

我怎样才能做到这一点?您的帮助将不胜感激。

标签: c#.net-5launchdarkly

解决方案


您需要通过实现来实现自定义配置提供程序,IConfigurationSource以便通过配置对象、IOptions 等访问它们

本文提供了如何执行此操作的示例: https ://docs.microsoft.com/en-us/dotnet/core/extensions/custom-configuration-provider


推荐阅读