diff --git a/src/OpenFeature.Hosting/OpenFeatureServiceCollectionExtensions.cs b/src/OpenFeature.Hosting/OpenFeatureServiceCollectionExtensions.cs index 236dc62b0..260b01319 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 => { }); // Ensures IOptions is available even when no providers are configured. 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(); }; }); } diff --git a/test/OpenFeature.Hosting.Tests/OpenFeatureServiceCollectionExtensionsTests.cs b/test/OpenFeature.Hosting.Tests/OpenFeatureServiceCollectionExtensionsTests.cs index dc3cc9345..ba9419b4b 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); + } }