Beispiel #1
0
 public static IHostBuilder UseXApp(this IHostBuilder builder, DescriptionLocator locator = default)
 {
     builder.EnsureNotNull(nameof(builder));
     //
     builder.ConfigureServices(configureDelegate: (locHostBuilder, locSvcs) => DefaultHostConfigureService.Default.UseXApp(svcs: locSvcs, locator: locator));
     return(builder);
 }
Beispiel #2
0
 public DefaultXAppHostedService(IServiceProvider serviceProvider, DescriptionLocator locator = default)
 {
     serviceProvider.EnsureNotNull(nameof(serviceProvider));
     //
     _serviceProvider = serviceProvider;
     _locator         = locator;
     _runControl      = new RunControl <DefaultXAppHostedService>(component: this, options: RunControlOptions.SingleStart, attemptState: null, beforeStart: null, start: DoStartAsync, stop: DoStopAsync, stopToken: default);
Beispiel #3
0
        public virtual IServiceCollection UseXApp(IServiceCollection svcs, DescriptionLocator locator = default)
        {
            svcs.EnsureNotNull(nameof(svcs));
            //
            var svcType = typeof(IXAppHostedService);

            if (!svcs.Select(locItem => locItem?.ServiceType).SkipNull().Any(locItem => svcType.IsAssignableFrom(c: locItem)))
            {
                svcs.AddTransient <IHostedService, DefaultXAppHostedService>(implementationFactory: locOuterSp => new DefaultXAppHostedService(serviceProvider: locOuterSp, locator: locator));
                if (locator is null)
                {
                    svcs.ConfigureSettingsFactory(factory: () => new CustomXAppDescriptionLocatorSettings(locator: CustomXAppDescriptionLocatorSettings.GetDefault().GetLocator(), isReadOnly: false));
                }
                else
                {
                    svcs.ConfigureSettingsFactory(factory: () => new CustomXAppDescriptionLocatorSettings(locator: locator, isReadOnly: false));
                }
            }
            return(svcs);
        }