Пример использования:
SomeAssembly.dll:
internal static class AssemblyWideConfig
{
public static readonly bool AnnotateOnRun = AppSwitch.GetForAssembly(() => AnnotateOnRun);
public static readonly ConsoleColor ErrorColor = AppSwitch.GetForAssembly(() => ConsoleColor, defaultValue: ConsoleColor.Green);
}
SomeAssembly.config:
<configuration>
<appSettings>
<add key="AssemblyWideConfig.AnnotateOnRun" value="true" />
<add key="AssemblyWideConfig.ErrorColor" value="DarkRed" />
</appSettings>
</configuration>
В чём отличия от того же
FeatureToggle:
0. Простейшее API, типы свитчей — только bool и enum.
1. AppSwitch предлагается навешивать индивидуально на каждую библиотеку, не пихать в общий appconfig. Если нужны значения из appconfig — можно будет добавить
AppSwitch.GetForApp() (имя условное).
2. JIT отлично
оптимизируетАвтор: Sinix
Дата: 27.03.16
работу с static readonly полями. В прочих фреймворках конечно можно запихнуть значения в поля вручную, но это уже лишняя работа
В чём недостаток: под .net core и winrt придётся изобрести свои костыли, или с чтением app.config вручную, или перенаправлять на стандартные
Option/ApplicationData.Current.LocalSetting.
Собственно вопрос: оно нам надо?