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); }
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);
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); }