/// <summary> /// Create the DependencyInjection implementing class of <see cref="IDbConfig"/> (strong type Ms<see cref="DbConfig"/>) /// </summary> /// <param name="configuration"></param> /// <param name="defaultDbConfigValues"></param> /// <param name="dbConfigCredentials"></param> /// <param name="prioritizedConfigValues"></param> /// <param name="prioritizedConfigKeys"></param> /// <param name="configurationDelimiter"></param> /// <returns></returns> public static DbConfig CreateDbConfig(this IConfiguration configuration, DefaultDbConfigValues defaultDbConfigValues = null, DbConfigCredentials dbConfigCredentials = null, IPrioritizedConfigValues prioritizedConfigValues = null, IEnumerable <IPrioritizedConfigKeys> prioritizedConfigKeys = null, IConfigurationDelimiter configurationDelimiter = null) { return(new MsDbConfig(configuration, null, defaultDbConfigValues, dbConfigCredentials, prioritizedConfigValues, prioritizedConfigKeys, configurationDelimiter)); }
/// <inheritdoc /> public MsDbConfig( IConfiguration configuration, IConfigurationChangedHandler configurationChangedHandler = null, DefaultDbConfigValues defaultDbConfigValues = null, DbConfigCredentials dbConfigCredentials = null, IPrioritizedConfigValues prioritizedConfigValues = null, IEnumerable <IPrioritizedConfigKeys> prioritizedConfigKeys = null, IConfigurationDelimiter delimiter = null) : base(defaultDbConfigValues ?? new MsDefaultDbConfigValues(configuration, prioritizedConfigValues, prioritizedConfigKeys), dbConfigCredentials) { Configuration = configuration; configurationChangedHandler?.RegisterConfigurationChangedCallback(OnConfigurationChanged); ConfigurationDelimiter = delimiter?.Delimiter ?? ":"; }
/// <summary> /// <para>Initialize the class by the array for <see cref="IPrioritizedConfigKeys"/>. The Array will be sorted by <see cref="IPrioritizedConfigKeys.Order"/> prop</para> /// <para>All <see cref="IPrioritizedConfigValues"/>-methods is implemented to get keys from <see cref="PrioritizedConfigKeys"/> array, and return first value different from null-or-empty</para> /// </summary> /// <param name="getConfigValueFunc"></param> /// <param name="prioritizedConfigKeys"></param> /// <param name="configurationDelimiter"></param> public PrioritizedConfigValues( Func <string[], string> getConfigValueFunc = null, IEnumerable <IPrioritizedConfigKeys> prioritizedConfigKeys = null, IConfigurationDelimiter configurationDelimiter = null) { PrioritizedConfigKeys = ToPrioritizedConfigKeysArray(); GetConfigValueFunc = getConfigValueFunc; Delimiter = configurationDelimiter?.Delimiter ?? ":"; IPrioritizedConfigKeys[] ToPrioritizedConfigKeysArray() { var array = prioritizedConfigKeys as IPrioritizedConfigKeys[] ?? prioritizedConfigKeys?.ToArray() ?? GetDefaultPrioritizedConfigKeys(); return(array.Any() == false?GetDefaultPrioritizedConfigKeys() : array.Distinct().OrderBy(x => x.Order).ToArray()); } }