public void RegisterModule(ModuleDescriptor moduleDescriptor) { ContainerBuilder containerBuilder = new ContainerBuilder(); ModuleRegistrationContext registrationContext = new ModuleRegistrationContext(moduleDescriptor); moduleDescriptor.RegisterModuleTypes(registrationContext, containerBuilder); moduleDescriptor.RegisterModuleCommands(registrationContext, containerBuilder); moduleDescriptor.RegisterModuleApiContexts(registrationContext, containerBuilder); moduleDescriptor.RegisterModuleControllers(registrationContext, containerBuilder, controllerExtensions); moduleDescriptor.RegisterCustomRoutes(registrationContext, containerBuilder); ContextScopeProvider.RegisterTypes(containerBuilder); knownModules.Add(moduleDescriptor.AreaName.ToLowerInvariant(), registrationContext); var jsModules = moduleDescriptor.RegisterJsIncludes(); if (jsModules != null) { foreach (var jsModuleDescriptor in jsModules) { knownJavaScriptModules.Add(jsModuleDescriptor.Name, jsModuleDescriptor); } } var userRoles = moduleDescriptor.RegisterUserRoles(containerBuilder); UpdateConcurrentBagWithEnumerator(knownUserRoles, userRoles); var sidebarHeadProjections = moduleDescriptor.RegisterSidebarHeaderProjections(containerBuilder); UpdateConcurrentBagWithEnumerator(knownSidebarHeadContentItems, sidebarHeadProjections); var sidebarSideProjections = moduleDescriptor.RegisterSidebarSideProjections(containerBuilder); UpdateConcurrentBagWithEnumerator(knownSidebarContentItems, sidebarSideProjections); var sidebarBodyProjections = moduleDescriptor.RegisterSidebarMainProjections(containerBuilder); UpdateConcurrentBagWithEnumerator(knownSidebarBodyContentItems, sidebarBodyProjections); var siteSettingsProjections = moduleDescriptor.RegisterSiteSettingsProjections(containerBuilder); UpdateConcurrentBagWithEnumerator(knownSiteSettingsItems, siteSettingsProjections); var styleSheetFiles = moduleDescriptor.RegisterCssIncludes(); if (styleSheetFiles != null) { foreach (var styleSheetFile in styleSheetFiles) { knownStyleSheetIncludes.Add(styleSheetFile); } } }