/// <summary> /// Try to read config from directory or create default replacement /// </summary> protected virtual IConfig TryGetFromDirectory(Type confType, string name) { // Get or create config object IConfig config; var configPath = GetConfigPath(name); if (File.Exists(configPath)) { try { var fileContent = File.ReadAllText(configPath); config = (IConfig)JsonConvert.DeserializeObject(fileContent, confType, JsonSettings.ReadableReplace); ValueProviderExecutor.Execute(config, new ValueProviderExecutorSettings().AddProviders(ValueProviders)); } catch (Exception e) { config = CreateConfig(confType, ConfigState.Error, e.Message); } } else { config = CreateConfig(confType, ConfigState.Generated, "Config file not found! Running on default values."); } return(config); }
private IConfig CreateConfig(Type confType, ConfigState state, string loadError) { var config = (IConfig)Activator.CreateInstance(confType); config.ConfigState = state; config.LoadError = loadError; // Initialize ConfigBase var configBase = config as ConfigBase; configBase?.Initialize(); // Fill default values ValueProviderExecutor.Execute(config, new ValueProviderExecutorSettings().AddProviders(ValueProviders)); return(config); }