用於功能切換的輕量級框架,以實現基於主幹的開發。
Switcheroo 的目標是簡單性、簡潔的語法和最少的功能集,同時不影響可擴展性和可測試性。
Switcheroo 可以透過 Nuget 安裝。
> 安裝包 Switcheroo
Switcheroo 根據 MIT 許可證獲得許可。
安裝
Nuget 套件可以在這裡找到。
新增配置
<配置> <配置部分> <section name="features" type="Switcheroo.Configuration.FeatureToggleConfiguration, Switcheroo"/> </configSections> <特點> <切換> <新增名稱=“Log.InColor”啟用=“true”/> </切換> </特徵> </配置>
初始化函式庫
Features.Initialize(x => x.FromApplicationConfig());
檢查功能狀態
if (Features.IsEnabled("Log.InColor")){// 實作功能}
布林值(真/假)
功能基於靜態二進位值進行切換 - 開啟或關閉。
features.Add(new BooleanToggle("Feature1", true));
<特點> <切換> <新增名稱=“BooleanToggle.Enabled”啟用=“true”/> <新增名稱=“BooleanToggle.Disabled”啟用=“假”/> </切換> </特徵>
日期範圍(真/假,在日期範圍內)
日期範圍功能切換根據二進位啟用值和目前日期進行評估。
features.Add(new DateRangeToggle("Feature2", true, DateTime.Now.AddDays(5), null));
<特點> <切換> <add name =「Date.Enabled.InRange」啟用=「true」從=「2010年1月1日」直到=「2050年12月31日」/> <add name =「Date.Enabled.Expired」啟用=「true」直到=「2010 年 12 月 31 日」/> <add name="Date.Enabled.Future"enabled="true" from="2050 年 1 月 1 日"/> <新增名稱=“Date.Disabled”啟用=“假”/> </切換> </特徵>
從日期和截止日期可以是DateTime.Parse可解析的任何有效日期格式。
既定的特色
將功能切換標記為已建立會使功能切換拋出FeatureEstablishedException異常,以確保不再查詢它。
功能。
<特點> <切換> <新增名稱=“EstablishedFeature”建立=“true”/> </切換> </特徵>
依賴關係
特徵可以依賴其他特徵。 例如,有時擁有一個“主要”功能,然後是依賴它的子功能會很方便。 可以在設定中將依賴項指定為逗號分隔清單。
var mainFeature = new BooleanToggle("mainFeature", true);var subFeature1 = new BooleanToggle("subFeature1", true);var subFeature2 = new BooleanToggle("subFeature2", true);var dependency1 = new Dependency1 =Feature. var dependency2 = new DependencyToggle(subFeature2, mainFeature);features.Add(dependency1);features.Add(dependency2);
<特點> <切換> <新增名稱=“SubFeature1”啟用=“true”依賴項=“MainFeature”/> <新增名稱=“SubFeature2”啟用=“true”依賴項=“MainFeature”/> <新增名稱=“MainFeature”啟用=“true”/> </切換> </特徵>
程式碼友善的初始化
IFeatureConfiguration features = new FeatureConfiguration{new BooleanToggle("Feature1", true),new DateRangeToggle("Feature2",true,DateTime.Now.AddDays(-2),DateTime.Now.AddDays(3))};
透過IFeatureConfiguration實例或靜態Feature.Instance支援實例實現 IOC 友好
For<IFeatureConfiguration>().Use(Features.Instance);
功能切換診斷: IFeatureConfiguration.WhatDoIHave
Console.WriteLine(features.WhatDoIHave());
Name Feature1
IsEnabled True
Name Feature2
IsEnabled True
From 11/16/2012 3:32:23 PM
Until 11/21/2012 3:32:23 PM
從自訂組態資源載入:建置在IConfigurationReader之上
0.3.4753.37554
刪除了 MutableToggle
新增了「凍結」切換配置的功能。
現在,在新增至功能配置容器時會驗證切換狀態(包括相依性中的循環)。
0.3.4749.36197
檢測依賴循環的機制。 此功能僅在透過應用程式配置配置相依性時才有效。
修正了依賴另一個 DependencyToggle 的 DependencyToggle 可能會導致重複切換新增到功能集中的錯誤。
v0.3.4748.37146
DependencyToggle 的配置機制
v0.2.4730.37739
新增了依賴關係切換。
從字典改為並發字典。
v0.2.4705.37094
新增了已建立的功能。
v0.1.4705.28808
新增了日期範圍切換。
相當多的內部重構。
v0.1.4704.41742
初始版本:簡單的切換。