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