private static JToken[] SelectTokens([NotNull] JToken[] tokens, [NotNull] IConfigurationSelector <JToken, JToken> selector)
        {
            if (tokens == null)
            {
                throw new ArgumentNullException(nameof(tokens));
            }
            if (selector == null)
            {
                throw new ArgumentNullException(nameof(selector));
            }

            var configs = new JToken[tokens.Length];

            for (var i = 0; i < tokens.Length; i++)
            {
                var config = tokens[i];

                if (config != null)
                {
                    config = selector.Select(config);
                }

                configs[i] = config;
            }

            return(configs);
        }
        /// <summary>
        /// Initializes new instance of <see cref="MicrosoftConfigurationCache{T}"/>.
        /// </summary>
        /// <param name="configurationProvider">Configuration provider.</param>
        /// <param name="selector">Configuration selector.</param>
        /// <param name="changeTokenSource">Change token.</param>
        public MicrosoftConfigurationCache(
            [NotNull] IConfigurationProvider <IConfiguration, IConfiguration> configurationProvider,
            [CanBeNull] IConfigurationSelector <IConfiguration, IConfiguration> selector,
            [NotNull] MicrosoftConfigurationChangeTokenSource changeTokenSource)
        {
            if (changeTokenSource == null)
            {
                throw new ArgumentNullException(nameof(changeTokenSource));
            }

            _configurationProvider = configurationProvider ?? throw new ArgumentNullException(nameof(configurationProvider));
            _selector = selector;

            _changeTokenListener = ChangeToken.OnChange(changeTokenSource.GetChangeToken, () => _lazyConfig = CreateLazyConfig());
            _lazyConfig          = CreateLazyConfig();
        }
Example #3
0
        private JToken[] SelectTokens(IConfigurationSelector <JToken, JToken> selector)
        {
            if (selector == null)
            {
                return(_tokens);
            }

            var configs = new JToken[_tokens.Length];

            for (var i = 0; i < _tokens.Length; i++)
            {
                var config = _tokens[i];

                if (config != null)
                {
                    config = selector.Select(config);
                }

                configs[i] = config;
            }

            return(configs);
        }
Example #4
0
        /// <inheritdoc />
        public TConfiguration GetConfiguration <TConfiguration>(IConfigurationSelector <JToken, JToken> selector = null)
        {
            var tokens = SelectTokens(selector);

            return(_tokenConverter.Convert <TConfiguration>(tokens));
        }
        /// <inheritdoc />
        public TConfiguration GetConfiguration <TConfiguration>(IConfigurationSelector <IConfiguration, IConfiguration> selector = null)
        {
            var configuration = selector == null ? _configuration : selector.Select(_configuration);

            return(_converter.Convert <TConfiguration>(configuration));
        }