/// <summary> /// Adds modules services to the specified <see cref="Microsoft.Extensions.DependencyInjection.IServiceCollection"/>. /// </summary> public static IServiceCollection AddModules(this IServiceCollection services, Action <ModularServiceCollection> configure = null) { services.AddWebHost(); services.AddManifestDefinition("Module.txt", "module"); services.AddExtensionLocation(Application.ModulesPath); // ModularTenantRouterMiddleware which is configured with UseModules() calls UserRouter() which requires the routing services to be // registered. This is also called by AddMvcCore() but some applications that do not enlist into MVC will need it too. services.AddRouting(); var modularServiceCollection = new ModularServiceCollection(services); // Use a single tenant and all features by default modularServiceCollection.Configure(internalServices => internalServices.AddAllFeaturesDescriptor() ); // Let the app change the default tenant behavior and set of features configure?.Invoke(modularServiceCollection); // Register the list of services to be resolved later on services.AddSingleton(_ => services); return(services); }
/// <summary> /// Registers a single tenant with all the available features. This is the default behavior. /// </summary> public static ModularServiceCollection WithAllFeatures(this ModularServiceCollection modules) { modules.Configure(services => { services.AddAllFeaturesDescriptor(); }); return(modules); }
public static ModularServiceCollection AddMvcModules(this ModularServiceCollection moduleServices, IServiceProvider applicationServices) { moduleServices.Configure(services => { services.AddMvcModules(applicationServices); }); return(moduleServices); }
/// <summary> /// Registers tenants defined in configuration. /// </summary> public static ModularServiceCollection WithTenants(this ModularServiceCollection modules) { modules.Configure(services => { services.AddScoped <IShellSettingsManager, FileShellSettingsManager>(); services.AddScoped <IShellDescriptorManager, FileShellDescriptorManager>(); }); return(modules); }
/// <summary> /// Registers a <see cref="IConfiguration"/> object that can be used by the modules. /// </summary> /// <returns></returns> public static ModularServiceCollection WithConfiguration( this ModularServiceCollection modules, IConfiguration configuration) { // Register the configuration object for modules to register options with it if (configuration != null) { modules.Configure(services => services.AddSingleton <IConfiguration>(configuration)); } return(modules); }
/// <summary> /// Registers a default tenant with a set of features that are used to setup and configure the actual tenants. /// For instance you can use this to add a custom Setup module. /// </summary> public static ModularServiceCollection WithDefaultFeatures( this ModularServiceCollection modules, params string[] featureIds) { modules.Configure(services => { foreach (var featureId in featureIds) { services.AddTransient(sp => new ShellFeature(featureId)); } ; }); return(modules); }
/// <summary> /// Registers a single tenant with the specified set of features. /// </summary> public static ModularServiceCollection WithFeatures( this ModularServiceCollection modules, params string[] featureIds) { var featuresList = featureIds.Select(featureId => new ShellFeature(featureId)).ToList(); modules.Configure(services => { foreach (var feature in featuresList) { services.AddTransient(sp => feature); } ; services.AddSetFeaturesDescriptor(featuresList); }); return(modules); }
/// <summary> /// Adds modules services to the specified <see cref="Microsoft.Extensions.DependencyInjection.IServiceCollection"/>. /// </summary> public static IServiceCollection AddModules(this IServiceCollection services, Action <ModularServiceCollection> configure = null) { services.AddWebHost(); services.AddManifestDefinition("Module.txt", "module"); services.AddExtensionLocation("Modules"); services.AddExtensionLocation("Packages"); var modularServiceCollection = new ModularServiceCollection(services); // Use a single tenant and all features by default modularServiceCollection.WithAllFeatures(); // Let the app change the default tenant behavior and set of features configure?.Invoke(modularServiceCollection); // Register the list of services to be resolved later on services.AddSingleton(_ => services); return(services); }