承接上一篇,如果有一些情境是限時開放的功能,時間過了以後就要關閉,那就可以用到 TimeWindow
- appsettings.json
"FeatureManagement": {
"FeatureB": {
"EnabledFor": [
{
"Name": "Microsoft.TimeWindow",
"Parameters": {
"Start": "2020-11-09 04:58:00Z",
"End": "2099-11-09 05:00:00Z"
}
}
]
}
}
- 基本的 Feature Toggle 使用
var isFeatureAEnabled = await _featureManager.IsEnabledAsync("FeatureA");
if(isFeatureAEnabled) {
// 有打開,走新邏輯
}
else {
// 未打開,走舊邏輯
}
- API Route 多個使用方式,驗證不過會回傳404
[FeatureGate("FeatureA")]
public async Task<ActionResult> Foo()
{
return Ok(result);
}
- 也可指定任一或多個 Feature 是否有打開
[FeatureGate(requirementType: RequirementType.Any, "FeatureA", "FeatureB")]
public async Task<ActionResult> Foo()
{
return Ok(result);
}
- 也可以用 Enum 避免弱型別的typo
[FeatureGate(MyFeatureFlags.FeatureA)]
public enum MyFeatureFlags
{
FeatureA
}
- startup 注入
services.AddFeatureManagement()
.AddFeatureFilter<TargetingFilter>();