internal static void AddCorePlusServices(this IServiceCollection services,
                                                 IPlusApplication PlusApplication,
                                                 PlusApplicationCreationOptions applicationCreationOptions)
        {
            var moduleLoader   = new ModuleLoader();
            var assemblyFinder = new AssemblyFinder(PlusApplication);
            var typeFinder     = new TypeFinder(assemblyFinder);

            if (!services.IsAdded <IConfiguration>())
            {
                services.ReplaceConfiguration(
                    ConfigurationHelper.BuildConfiguration(
                        applicationCreationOptions.Configuration
                        )
                    );
            }

            services.TryAddSingleton <IModuleLoader>(moduleLoader);
            services.TryAddSingleton <IAssemblyFinder>(assemblyFinder);
            services.TryAddSingleton <ITypeFinder>(typeFinder);

            services.AddAssemblyOf <IPlusApplication>();

            services.Configure <PlusModuleLifecycleOptions>(options =>
            {
                options.Contributors.Add <OnPreApplicationInitializationModuleLifecycleContributor>();
                options.Contributors.Add <OnApplicationInitializationModuleLifecycleContributor>();
                options.Contributors.Add <OnPostApplicationInitializationModuleLifecycleContributor>();
                options.Contributors.Add <OnApplicationShutdownModuleLifecycleContributor>();
            });
        }
Beispiel #2
0
 public PlusConventionalControllerFeatureProvider(IPlusApplication application)
 {
     _application = application;
 }