功能标志可以使用功能筛选器有条件地启用功能。 若要了解有关功能筛选器的详细信息,请参阅通过功能筛选器启用条件功能。
本指南中使用的示例基于功能管理快速入门中介绍的 ASP.NET Core 应用程序。 在继续学习之前,请完成快速入门,创建具有 Beta 功能标志的 ASP.NET Core 应用程序。 完成后,必须将自定义功能筛选器添加到你的应用程序配置存储中的 Beta 功能标志。
在本指南中,你将了解如何实现自定义功能筛选器,并使用功能筛选器有条件地启用功能。
你已在先决条件中添加了一个名为 Random 的自定义功能筛选器,其中包含你的 Beta 功能标志的 Percentage 参数。 接下来,你将实现功能筛选器,根据 Percentage 参数定义的几率启用 Beta 功能标志。
使用以下代码添加
RandomFilter.cs
文件。using Microsoft.FeatureManagement; namespace TestAppConfig { [FilterAlias("Random")] public class RandomFilter : IFeatureFilter { private readonly Random _random; public RandomFilter() { _random = new Random(); } public Task<bool> EvaluateAsync(FeatureFilterEvaluationContext context) { int percentage = context.Parameters.GetSection("Percentage").Get<int>(); int randomNumber = _random.Next(100); return Task.FromResult(randomNumber <= percentage); } } }
你添加了一个从
Microsoft.FeatureManagement
库实现IFeatureFilter
接口的RandomFilter
类。IFeatureFilter
接口具有一个方法,名为EvaluateAsync
,每当评估功能标志时都会调用它。 在EvaluateAsync
中,功能筛选器通过返回true
来启用功能标志。你将
FilterAliasAttribute
装饰到RandomFilter
上,从而给你的筛选器一个别名 Random,该别名与你在 Azure 应用程序配置中的 Beta 功能标志中设置的筛选器名称相匹配。打开 Program.cs 文件,并通过调用
AddFeatureFilter
方法注册RandomFilter
。// The rest of existing code in Program.cs // ... ... // Add feature management to the container of services. builder.Services.AddFeatureManagement() .AddFeatureFilter<RandomFilter>(); // The rest of existing code in Program.cs // ... ...
重新启动应用程序并刷新浏览器几次。 如果不手动切换功能标志,你会看到 Beta 菜单有时会显示,有时不显示。
若要详细了解内置功能筛选器,请继续学习以下文档。
有关 .NET 功能管理库的完整功能概要,请继续阅读以下文档。