Пример #1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="container"></param>
        /// <param name="config"></param>
        public static void ConfigureClientWorker(IServiceCollectionWrapper container, Action <ClientConfig> config)
        {
            string configName = $"Clientconfig_{GetUniqueNumber()}";
            var    conf       = new ClientConfig();

            conf.UrlProvider = new DefaultUrlProvider(conf.TypeReg, conf.AssemblyReg);
            config(conf);

            var(ConfigType, holder) = CreateConfigWithMarkerInterface <IntegratedHttpApiClientConfig>(configName);
            holder.TimeOut          = conf.RemoteOperationTimeout;
            holder.urlProvider      = conf.UrlProvider;
            holder.LastHandler      = conf.LastHandler;


            container.AddSingleton(ConfigType, holder); //The config is now registered as a unique type in the container.

            conf.HttpHandlers.ForEach((h) => { if (h.register)
                                               {
                                                   container.AddTransient(h.type);
                                               }
                                      });                                                          //All HTTPHandlers is registerd.. (except those that should not :)

            var ProxyApiClientType = Utils.DynamicInherit <IntegratedHttpJsonApiClient>($"Client_{configName}", new Dictionary <Type, Type> {
                { typeof(IntegratedHttpApiClientConfig), ConfigType }
            }, typeof(ServiceCollectionExtension).GetMethod(nameof(FillTypes)), conf.HttpHandlers.Select(e => e.Item2).ToList());

            container.AddScoped(ProxyApiClientType);

            foreach (var registerdInterface in conf.Clients)
            {
                container.AddTransient(registerdInterface, ProxyFactory.CreateProxyTypeFor(registerdInterface, ProxyApiClientType)); //Create the type with the correct dependencies...
            }
        }
Пример #2
0
        /// <summary>
        /// Initializes new ConfigServerClientBuilder
        /// </summary>
        /// <param name="serviceCollection">Application Service collection</param>
        public ConfigServerClientBuilder(IServiceCollectionWrapper serviceCollection)
        {
            this.serviceCollection = serviceCollection;
            var configurationCollection = new ConfigurationRegistry();

            ConfigurationRegistry = configurationCollection;
            serviceCollection.AddSingleton <IConfigurationRegistry>(configurationCollection);
        }
Пример #3
0
 /// <summary>
 /// Adds ConfigServer client to specified ServiceCollection
 /// </summary>
 /// <param name="source">The IServiceCollection to add ConfigServer client to</param>
 /// <param name="options">Options for ConfigServer client</param>
 /// <returns>ConfigServer client builder for further configuration</returns>
 public static ConfigServerClientBuilder AddConfigServerClient(this IServiceCollectionWrapper source, ConfigServerClientOptions options)
 {
     return(SetUpBuilder(new ConfigServerClientBuilder(source), options));
 }