From dc3f6cf9be93c64dc057f5985ed6fcc74395e36f Mon Sep 17 00:00:00 2001 From: Kyle Julian <38759683+kylejuliandev@users.noreply.github.com> Date: Tue, 21 Oct 2025 21:40:54 +0100 Subject: [PATCH 1/4] Fix issue with FeatureClient not being resolved * Address issue when adding context to the feature builder without providing any provider or default feature client. Signed-off-by: Kyle Julian <38759683+kylejuliandev@users.noreply.github.com> --- .../OpenFeatureServiceCollectionExtensions.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/OpenFeature.Hosting/OpenFeatureServiceCollectionExtensions.cs b/src/OpenFeature.Hosting/OpenFeatureServiceCollectionExtensions.cs index 236dc62b..d4d25ad9 100644 --- a/src/OpenFeature.Hosting/OpenFeatureServiceCollectionExtensions.cs +++ b/src/OpenFeature.Hosting/OpenFeatureServiceCollectionExtensions.cs @@ -30,6 +30,7 @@ public static IServiceCollection AddOpenFeature(this IServiceCollection services var builder = new OpenFeatureBuilder(services); configure(builder); + builder.Services.Configure(c => { }); builder.Services.AddHostedService(); // If a default provider is specified without additional providers, @@ -50,7 +51,7 @@ public static IServiceCollection AddOpenFeature(this IServiceCollection services options.DefaultNameSelector = provider => { var options = provider.GetRequiredService>().Value; - return options.ProviderNames.First(); + return options.ProviderNames.FirstOrDefault(); }; }); } From 76fb22e1d2f96368ceb46a30a2cf0d29b02006a6 Mon Sep 17 00:00:00 2001 From: Kyle Julian <38759683+kylejuliandev@users.noreply.github.com> Date: Wed, 29 Oct 2025 20:02:36 +0000 Subject: [PATCH 2/4] Add unit test for bug Signed-off-by: Kyle Julian <38759683+kylejuliandev@users.noreply.github.com> --- .../OpenFeatureServiceCollectionExtensionsTests.cs | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/test/OpenFeature.Hosting.Tests/OpenFeatureServiceCollectionExtensionsTests.cs b/test/OpenFeature.Hosting.Tests/OpenFeatureServiceCollectionExtensionsTests.cs index dc3cc934..85afe679 100644 --- a/test/OpenFeature.Hosting.Tests/OpenFeatureServiceCollectionExtensionsTests.cs +++ b/test/OpenFeature.Hosting.Tests/OpenFeatureServiceCollectionExtensionsTests.cs @@ -92,4 +92,16 @@ public void AddOpenFeature_WithNamedDefaultProvider_InvokesAddPolicyName() var otherClient = serviceProvider.GetService(); Assert.NotNull(otherClient); } + + [Fact] + public void AddOpenFeature_WithNoProvider_CanResolveFeatureClient() + { + // Act + _systemUnderTest.AddOpenFeature(builder => {}); + + // Assert + using var serviceProvider = _systemUnderTest.BuildServiceProvider(); + var client = serviceProvider.GetService(); + Assert.NotNull(client); + } } From f4ecb6f85e0a3fcefee0633431f677c8ae5eb152 Mon Sep 17 00:00:00 2001 From: Kyle Julian <38759683+kylejuliandev@users.noreply.github.com> Date: Wed, 29 Oct 2025 20:07:40 +0000 Subject: [PATCH 3/4] Run dotnet format Signed-off-by: Kyle Julian <38759683+kylejuliandev@users.noreply.github.com> --- .../OpenFeatureServiceCollectionExtensionsTests.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/OpenFeature.Hosting.Tests/OpenFeatureServiceCollectionExtensionsTests.cs b/test/OpenFeature.Hosting.Tests/OpenFeatureServiceCollectionExtensionsTests.cs index 85afe679..ba9419b4 100644 --- a/test/OpenFeature.Hosting.Tests/OpenFeatureServiceCollectionExtensionsTests.cs +++ b/test/OpenFeature.Hosting.Tests/OpenFeatureServiceCollectionExtensionsTests.cs @@ -97,7 +97,7 @@ public void AddOpenFeature_WithNamedDefaultProvider_InvokesAddPolicyName() public void AddOpenFeature_WithNoProvider_CanResolveFeatureClient() { // Act - _systemUnderTest.AddOpenFeature(builder => {}); + _systemUnderTest.AddOpenFeature(builder => { }); // Assert using var serviceProvider = _systemUnderTest.BuildServiceProvider(); From 123f4e8a47e2a71544c4762cd5214492cda34066 Mon Sep 17 00:00:00 2001 From: Kyle Julian <38759683+kylejuliandev@users.noreply.github.com> Date: Wed, 29 Oct 2025 22:14:39 +0000 Subject: [PATCH 4/4] Address Gemini comment Signed-off-by: Kyle Julian <38759683+kylejuliandev@users.noreply.github.com> --- .../OpenFeatureServiceCollectionExtensions.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/OpenFeature.Hosting/OpenFeatureServiceCollectionExtensions.cs b/src/OpenFeature.Hosting/OpenFeatureServiceCollectionExtensions.cs index d4d25ad9..260b0131 100644 --- a/src/OpenFeature.Hosting/OpenFeatureServiceCollectionExtensions.cs +++ b/src/OpenFeature.Hosting/OpenFeatureServiceCollectionExtensions.cs @@ -30,7 +30,7 @@ public static IServiceCollection AddOpenFeature(this IServiceCollection services var builder = new OpenFeatureBuilder(services); configure(builder); - builder.Services.Configure(c => { }); + builder.Services.Configure(c => { }); // Ensures IOptions is available even when no providers are configured. builder.Services.AddHostedService(); // If a default provider is specified without additional providers,