.NET позволяет использовать файлы .settings для управления настройками приложения. Я хотел бы хранить настройки «Производство», «Разработка» и «Тестирование» отдельно, чтобы я мог сделать что-то вроде этого:
EnvironmentSettings environmentSettings;
// get the current environment (Production, Development or Test)
ApplicationEnvironment Environment = (ApplicationEnvironment)
Enum.Parse(typeof(ApplicationEnvironment), Settings.Default.ApplicationEnvironment);
switch (Environment)
{
case ApplicationEnvironment.Production:
environmentSettings = Settings.Production;
break;
...
}
string reportOutputLocation = environmentSettings.ReportOutputLocation;
По сути, мне нужны два отдельных класса настроек: общий класс настроек, в котором хранятся выбранные свойства среды и свойства, не относящиеся к среде, и 3 статических экземпляра второго класса, который называется EnvironmentSettings. Используемый экземпляр должен зависеть от среды, указанной в классе общих настроек.
Есть ли способ сделать это, если не задавать вручную значения всех этих настроек в статическом конструкторе или что-то в этом роде? Если бы мне пришлось это сделать, я бы предпочел просто иметь один большой класс «Настройки» со свойствами, такими как «DevOutputLocation», «LiveOutputLocation» и т. Д.
У меня может быть несколько файлов .settings в моем проекте, но это просто создает отдельные классы, которые не являются производными друг от друга. Таким образом, я мог бы создать файлы DevelopmentSettings.settings, ProductionSettings.settings и TestSettings.settings и дать им одинаковые свойства, но тогда мне понадобится куча операторов switch везде, чтобы определить, какой класс использовать, поскольку они не являются производными от общего класса .