Beispiel #1
0
        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));
        }
Beispiel #2
0
        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));
        }
Beispiel #3
0
        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));
        }
Beispiel #4
0
        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);
        }