public static HostConfigurator Service <TService>(this HostConfigurator configurator,
                                                          Action <ServiceConfigurator <TService> > callback)
            where TService : class
        {
            if (configurator == null)
            {
                throw new ArgumentNullException("configurator");
            }
            if (callback == null)
            {
                throw new ArgumentNullException("callback");
            }

            var serviceConfigurator = new DelegateServiceConfigurator <TService>();

            callback(serviceConfigurator);

            configurator.UseServiceBuilder(x =>
            {
                ConfigurationResult configurationResult =
                    ValidateConfigurationResult.CompileResults(serviceConfigurator.Validate());
                if (configurationResult.Results.Any())
                {
                    throw new HostConfigurationException("The service was not properly configured");
                }

                ServiceBuilder serviceBuilder = serviceConfigurator.Build();

                return(serviceBuilder);
            });

            return(configurator);
        }
Beispiel #2
0
        public static ServiceBuilderFactory CreateServiceBuilderFactory <TService>(Action <ServiceConfigurator <TService> > callback)
            where TService : class
        {
            if (callback == null)
            {
                throw new ArgumentNullException(nameof(callback));
            }

            var serviceConfigurator = new DelegateServiceConfigurator <TService>();

            callback(serviceConfigurator);

            ServiceBuilder ServiceBuilderFactory(HostSettings x)
            {
                ConfigurationResult configurationResult = ValidateConfigurationResult.CompileResults(serviceConfigurator.Validate());

                if (configurationResult.Results.Any())
                {
                    throw new HostConfigurationException("The service was not properly configured");
                }

                ServiceBuilder serviceBuilder = serviceConfigurator.Build();

                return(serviceBuilder);
            }

            return(ServiceBuilderFactory);
        }