Esempio n. 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));
        }
Esempio n. 2
0
 public ManageClientOptions(Data data, TcpClient client, IClientOptionsFactory clientOptionsFactory, ILogger <Worker> logger, IRequests requests)
 {
     _client = client;
     _data   = data;
     _clientOptionsFactory = clientOptionsFactory;
     _logger   = logger;
     _requests = requests;
 }