diff --git a/README.md b/README.md index 9137c6ed..a2b2c511 100644 --- a/README.md +++ b/README.md @@ -533,7 +533,7 @@ If all of three filters are registered: ## Built-In Feature Filters -There a few feature filters that come with the `Microsoft.FeatureManagement` package: `PercentageFilter`, `TimeWindowFilter`, `ContextualTargetingFilter` and `TargetingFilter`. All filters, except for the `TargetingFilter`, are added automatically when feature management is registered. The `TargetingFilter` is added with the `WithTargeting` method that is detailed in the `Targeting` section below. +There a few feature filters that come with the `Microsoft.FeatureManagement` package: `PercentageFilter`, `TimeWindowFilter`, `ContextualTargetingFilter` and `TargetingFilter`. All filters, except for the `TargetingFilter`, are added **automatically** when feature management is registered by `AddFeatureManagement` method. The `TargetingFilter` is added with the `WithTargeting` method that is detailed in the `Targeting` section below. Each of the built-in feature filters have their own parameters. Here is the list of feature filters along with examples. @@ -603,7 +603,7 @@ The `Recurrence` settings is made up of two parts: `Pattern` (how often the time #### Recurrence Pattern -There are two possible recurrence pattern types: `Daily` and `Weekly`. For example, a time window could repeat "every day", "every 3 days", "every Monday" or "on Friday per 2 weeks". +There are two possible recurrence pattern types: `Daily` and `Weekly`. For example, a time window could repeat "every day", "every 3 days", "every Monday" or "every other Friday". Depending on the type, certain fields of the `Pattern` are required, optional, or ignored. diff --git a/src/Microsoft.FeatureManagement.AspNetCore/Microsoft.FeatureManagement.AspNetCore.csproj b/src/Microsoft.FeatureManagement.AspNetCore/Microsoft.FeatureManagement.AspNetCore.csproj index aca96791..94d93f15 100644 --- a/src/Microsoft.FeatureManagement.AspNetCore/Microsoft.FeatureManagement.AspNetCore.csproj +++ b/src/Microsoft.FeatureManagement.AspNetCore/Microsoft.FeatureManagement.AspNetCore.csproj @@ -5,7 +5,7 @@ 3 3 - 0 + 1 @@ -21,8 +21,10 @@ Microsoft.FeatureManagement.AspNetCore provides a way to develop and expose application functionality based on features. Many applications have special requirements when a new feature is developed such as when the feature should be enabled and under what conditions. This library provides a way to define these relationships, and also integrates into common ASP.NET Core code patterns to make exposing these features possible. Microsoft Microsoft - https://licenses.nuget.org/MIT - https://github.com/Azure/AppConfiguration + https://github.com/microsoft/FeatureManagement-Dotnet + https://github.com/microsoft/FeatureManagement-Dotnet.git + git + MIT Release notes can be found at https://aka.ms/MicrosoftFeatureManagementReleaseNotes Microsoft FeatureManagement FeatureFlags AzureAppConfiguration aspnetcore https://aka.ms/AzureAppConfigurationPackageIcon diff --git a/src/Microsoft.FeatureManagement/FeatureManagementBuilder.cs b/src/Microsoft.FeatureManagement/FeatureManagementBuilder.cs index 1d1e699b..2b2af56c 100644 --- a/src/Microsoft.FeatureManagement/FeatureManagementBuilder.cs +++ b/src/Microsoft.FeatureManagement/FeatureManagementBuilder.cs @@ -5,6 +5,7 @@ using System.Collections.Generic; using System.Linq; using Microsoft.Extensions.DependencyInjection; +using Microsoft.FeatureManagement.FeatureFilters; namespace Microsoft.FeatureManagement { @@ -26,6 +27,13 @@ public IFeatureManagementBuilder AddFeatureFilter() where T : IFeatureFilterM Type implementationType = typeof(T); + // + // TimeWindowFilter will only be added through another overload of AddFeatureFilter + if (implementationType == typeof(TimeWindowFilter)) + { + return this; + } + IEnumerable featureFilterImplementations = implementationType.GetInterfaces() .Where(i => i == typeof(IFeatureFilter) || (i.IsGenericType && i.GetGenericTypeDefinition().IsAssignableFrom(typeof(IContextualFeatureFilter<>)))); diff --git a/src/Microsoft.FeatureManagement/Microsoft.FeatureManagement.csproj b/src/Microsoft.FeatureManagement/Microsoft.FeatureManagement.csproj index 4b99efcf..528a3448 100644 --- a/src/Microsoft.FeatureManagement/Microsoft.FeatureManagement.csproj +++ b/src/Microsoft.FeatureManagement/Microsoft.FeatureManagement.csproj @@ -5,7 +5,7 @@ 3 3 - 0 + 1 @@ -22,8 +22,10 @@ Microsoft.FeatureManagement provides a way to develop and expose application functionality based on features. Many applications have special requirements when a new feature is developed such as when the feature should be enabled and under what conditions. This library provides a way to define these relationships, and also integrates into common .NET code patterns to make exposing these features possible. Microsoft Microsoft - https://github.com/Azure/AppConfiguration - https://licenses.nuget.org/MIT + https://github.com/microsoft/FeatureManagement-Dotnet + https://github.com/microsoft/FeatureManagement-Dotnet.git + git + MIT Release notes can be found at https://aka.ms/MicrosoftFeatureManagementReleaseNotes Microsoft FeatureManagement FeatureFlags AzureAppConfiguration https://aka.ms/AzureAppConfigurationPackageIcon diff --git a/src/Microsoft.FeatureManagement/Targeting/ContextualTargetingFilter.cs b/src/Microsoft.FeatureManagement/Targeting/ContextualTargetingFilter.cs index 2310d380..b4b43bde 100644 --- a/src/Microsoft.FeatureManagement/Targeting/ContextualTargetingFilter.cs +++ b/src/Microsoft.FeatureManagement/Targeting/ContextualTargetingFilter.cs @@ -5,7 +5,6 @@ using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; using System; -using System.Collections.Generic; using System.Linq; using System.Security.Cryptography; using System.Text;