承接上一篇,如果有一些情境是限時開放的功能,時間過了以後就要關閉,那就可以用到 TimeWindow

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