public static void AddService(this ApplicationServiceManager applicationServiceManager, Type serviceType, bool isRequiredService = true) { if (applicationServiceManager == null) { throw new ArgumentNullException(nameof(applicationServiceManager)); } if (serviceType == null) { throw new ArgumentNullException(nameof(serviceType)); } Task ServiceInitialization(object service, IServiceProvider serviceProvider) { if (service is IAsyncInitialization asyncInitialization) { return(asyncInitialization.Initialization); } return(Task.CompletedTask); } applicationServiceManager.ApplicationServiceDescriptors.Add(new ApplicationServiceDescriptor(serviceType, ServiceInitialization, isRequiredService)); }
public static void AddService <TService>(this ApplicationServiceManager applicationServiceManager, Func <TService, IServiceProvider, Task> serviceInitialization, bool isRequiredService = true) { if (applicationServiceManager == null) { throw new ArgumentNullException(nameof(applicationServiceManager)); } if (serviceInitialization == null) { throw new ArgumentNullException(nameof(serviceInitialization)); } Task ServiceInitialization(object service, IServiceProvider serviceProvider) { return(serviceInitialization((TService)service, serviceProvider)); } applicationServiceManager.ApplicationServiceDescriptors.Add(new ApplicationServiceDescriptor(typeof(TService), ServiceInitialization, isRequiredService)); }
public static void AddService(this ApplicationServiceManager applicationServiceManager, Type serviceType, Func <object, IServiceProvider, Task> serviceInitialization, bool isRequiredService = true) { if (applicationServiceManager == null) { throw new ArgumentNullException(nameof(applicationServiceManager)); } if (serviceType == null) { throw new ArgumentNullException(nameof(serviceType)); } if (serviceInitialization == null) { throw new ArgumentNullException(nameof(serviceInitialization)); } applicationServiceManager.ApplicationServiceDescriptors.Add(new ApplicationServiceDescriptor(serviceType, serviceInitialization, isRequiredService)); }
public static void ConfigureApplicationServices(this IServiceCollection services, Action <ApplicationServiceManager> configuration) { if (services == null) { throw new ArgumentNullException(nameof(services)); } if (configuration == null) { throw new ArgumentNullException(nameof(configuration)); } var serviceManager = services.GetService <ApplicationServiceManager>(); if (serviceManager == null) { serviceManager = new ApplicationServiceManager(); } configuration(serviceManager); services.TryAddSingleton(serviceManager); }