トランクベースの開発を可能にする機能切り替え用の軽量フレームワーク。
Switcheroo は、拡張性とテスト容易性を犠牲にすることなく、クリーンな構文と最小限の機能セットを備えたシンプルさを目指しています。
Switcheroo は Nuget 経由でインストールできます。
> インストールパッケージ Switcheroo
Switcheroo は MIT ライセンスに基づいてライセンスされています。
インストール
Nuget パッケージはここにあります。
構成の追加
<構成> <configSections> <section name="features" type="Switcheroo.Configuration.FeatureToggleConfiguration、Switcheroo"/> </configセクション> <特長> <トグル> <add name="Log.InColor" Enabled="true"/> </トグル> </特徴> </設定>
ライブラリの初期化
features.Initialize(x => x.FromApplicationConfig());
機能のステータスを確認する
if (Functions.IsEnabled("Log.InColor")){// 機能を実装する}
ブール値 (true/false)
この機能は、静的なバイナリ値 (オンまたはオフ) に基づいて切り替わります。
features.Add(new BooleanToggle("Feature1", true));
<特長> <トグル> <add name="BooleanToggle.Enabled" Enabled="true"/> <add name="BooleanToggle.Disabled" Enabled="false"/> </トグル> </特徴>
日付範囲 (true/false、日付範囲内)
日付範囲機能の切り替えは、バイナリ対応値と現在の日付の両方で評価されます。
features.Add(new DateRangeToggle("Feature2", true, DateTime.Now.AddDays(5), null));
<特長> <トグル> <add name="Date.Enabled.InRange" Enabled="true" from="2010 年 1 月 1 日" until="2050 年 12 月 31 日"/> <add name="Date.Enabled.Expired" Enabled="true" until="2010 年 12 月 31 日"/> <add name="Date.Enabled.Future" Enabled="true" from="2050 年 1 月 1 日"/> <add name="Date.Disabled" Enabled="false"/> </トグル> </特徴>
Fromおよびuntil の日付には、 DateTime.Parseで解析できる任意の有効な日付形式を指定できます。
確立された機能
機能トグルを確立済みとしてマークすると、機能トグルは、それ以上クエリされないようにするために、 FeaturesteadedException例外をスローします。
features.Add(new 確立された機能Toggle("確立された機能"));
<特長> <トグル> <add name="確立された機能" 確立された="true"/> </トグル> </特徴>
依存関係
機能は他の機能に依存する場合があります。 たとえば、「メイン」機能とそれに依存するサブ機能があると便利な場合があります。 依存関係は、コンマ区切りのリストとして構成で指定できます。
var mainFeature = new BooleanToggle("mainFeature", true);var subFeature1 = new BooleanToggle("subFeature1", true);var subFeature2 = new BooleanToggle("subFeature2", true);var dependency1 = new dependencyToggle(subFeature1, mainFeature); var dependency2 = 新しいdependencyToggle(subFeature2, mainFeature);features.Add(dependency1);features.Add(dependency2);
<特長> <トグル> <add name="SubFeature1" Enabled="true" dependency="MainFeature"/> <add name="SubFeature2" Enabled="true" dependency="MainFeature"/> <add name="MainFeature" Enabled="true" /> </トグル> </特徴>
コードフレンドリーな初期化
IFeatureConfiguration 機能 = 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
依存関係トグルを追加しました。
Dictionary から ConcurrentDictionary に変更されました。
v0.2.4705.37094
確立された機能を追加しました。
v0.1.4705.28808
DateRange トグルを追加しました。
かなりの量の内部リファクタリング。
v0.1.4704.41742
初期バージョン: シンプルな切り替え。