用于功能切换的轻量级框架,以实现基于主干的开发。
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异常,以确保不再查询它。
功能。添加(新的EstablishedFeatureToggle(“EstablishedFeature”));
<特点> <切换> <添加名称=“EstablishedFeature”建立=“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 = 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
初始版本:简单的切换。