Облегченная платформа для переключения функций для обеспечения разработки на основе магистральной линии.
Switcheroo стремится к простоте, с чистым синтаксисом и минимальным набором функций, не жертвуя при этом расширяемостью и тестируемостью.
Switcheroo можно установить через Nuget.
> Установочный пакет Switcheroo
Switcheroo распространяется по лицензии MIT.
Установка
Пакеты Nuget можно найти здесь.
Добавить конфигурацию
<конфигурация> <конфигурационные секции> <section name="features" type="Switcheroo.Configuration.FeatureToggleConfiguration, Switcheroo"/> </configSections> <функции> <переключает> <add name="Log.InColor" Enabled="true"/> </переключается> </функции> </конфигурация>
Инициализация библиотеки
Features.Initialize(x => x.FromApplicationConfig());
Проверка статуса функции
if (Features.IsEnabled("Log.InColor")){//Реализовать функцию}
Логическое значение (истина/ложь)
Функция переключается на основе статического двоичного значения — вкл. или выкл.
Features.Add(new BooleanToggle("Feature1", true));
<функции> <переключает> <add name="BooleanToggle.Enabled" Enabled="true"/> <add name="BooleanToggle.Disabled" Enable="false"/> </переключатель> </функции>
Диапазон дат (истина/ложь, в пределах диапазона дат)
Переключатели функций диапазона дат оцениваются как по включенному двоичному значению, так и по текущей дате.
Features.Add(new DateRangeToggle("Feature2", true, DateTime.Now.AddDays(5), null));
<функции> <переключает> <add name="Date.Enabled.InRange" Enabled="true" from="1 января 2010" до="31 декабря 2050"/> <add name="Date.Enabled.Expired" Enable="true" до="31 декабря 2010 г."/> <add name="Date.Enabled.Future" Enabled="true" from="1 января 2050 года"/> <add name="Date.Disabled" Enable="false"/> </переключатель> </функции>
Даты от и до могут быть в любом допустимом формате даты, который можно анализировать с помощью DateTime.Parse .
Установленные функции
Если пометить переключатель функции как установленный, он выдаст исключение FeatureEstablishedException , чтобы гарантировать, что он больше не запрашивается.
функции.Добавить(новый УстановленнаяФатураToggle("установленнаяФакция"));
<функции> <переключает> <add name="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 = новый DependencyToggle(subFeature2, mainFeature);features.Add(зависимость1);features.Add(зависимость2);
<функции> <переключает> <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))};
Поддержка IOC через экземпляры IFeatureConfiguration или статический резервный экземпляр Feature.Instance .
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
Добавлен DependencyToggle.
Изменен со словаря на ConcurrentDictionary.
v0.2.4705.37094
Добавлены штатные функции.
v0.1.4705.28808
Добавлен переключатель DateRange.
Немного внутреннего рефакторинга.
v0.1.4704.41742
Начальная версия: простые переключатели.