Exemple #1
0
        public FallbackAzureClientFactory(
            IOptionsMonitor <AzureClientsGlobalOptions> globalOptions,
            IServiceProvider serviceProvider,
            AzureComponentFactory componentFactory,
            EventSourceLogForwarder logForwarder)
        {
            _configurationRoot = globalOptions.CurrentValue.ConfigurationRootResolver?.Invoke(serviceProvider);

            _componentFactory    = componentFactory;
            _logForwarder        = logForwarder;
            _clientRegistrations = new Dictionary <string, FallbackClientRegistration <TClient> >();

            foreach (var constructor in typeof(TClient).GetConstructors(BindingFlags.Public | BindingFlags.Instance))
            {
                var lastParameter = constructor.GetParameters().LastOrDefault();
                if (lastParameter != null && typeof(ClientOptions).IsAssignableFrom(lastParameter.ParameterType))
                {
                    _clientOptionType = lastParameter.ParameterType;
                    break;
                }
            }

            if (_clientOptionType == null)
            {
                throw new InvalidOperationException("Unable to detect the client option type");
            }

            _optionsFactory = (IClientOptionsFactory)ActivatorUtilities.CreateInstance(serviceProvider, typeof(ClientOptionsFactory <,>).MakeGenericType(typeof(TClient), _clientOptionType));
        }
Exemple #2
0
        public FallbackAzureClientFactory(
            IOptionsMonitor <AzureClientsGlobalOptions> globalOptions,
            IServiceProvider serviceProvider,
            EventSourceLogForwarder logForwarder)
        {
            _globalOptions       = globalOptions;
            _serviceProvider     = serviceProvider;
            _logForwarder        = logForwarder;
            _clientRegistrations = new Dictionary <string, FallbackClientRegistration <TClient> >();

            foreach (var constructor in typeof(TClient).GetConstructors(BindingFlags.Public | BindingFlags.Instance))
            {
                var lastParameter = constructor.GetParameters().LastOrDefault();
                if (lastParameter != null && typeof(ClientOptions).IsAssignableFrom(lastParameter.ParameterType))
                {
                    _clientOptionType = lastParameter.ParameterType;
                    break;
                }
            }

            if (_clientOptionType == null)
            {
                throw new InvalidOperationException("Unable to detect the client option type");
            }
        }
        public AzureClientFactory(
            IServiceProvider serviceProvider,
            IOptionsMonitor <AzureClientCredentialOptions <TClient> > clientsOptions,
            IEnumerable <ClientRegistration <TClient, TOptions> > clientRegistrations, IOptionsMonitor <TOptions> monitor,
            EventSourceLogForwarder logForwarder)
        {
            _clientRegistrations = new Dictionary <string, ClientRegistration <TClient, TOptions> >();
            foreach (var registration in clientRegistrations)
            {
                _clientRegistrations[registration.Name] = registration;
            }

            _serviceProvider = serviceProvider;
            _clientsOptions  = clientsOptions;
            _monitor         = monitor;
            _logForwarder    = logForwarder;
        }