public void OnSetupModule(Action <ModuleShellOptionsBuilder <TModule> > configureModuleOptionsBuilder) { Services.AddSingleton <IModuleManager <TModule>, ModuleManager <TModule> >((sp) => { var routeHandler = DefaultRouteHandlerFactory(); var modulesRouter = new ModulesRouter <TModule>(routeHandler); var allModules = sp.GetServices <TModule>(); var moduleManager = new ModuleManager <TModule>(modulesRouter); // todo consider notifying subscribers when new module container is created. // var containerEventsPublisher = sp.GetServices<IContainerEventsPublisher<TModule>>(); foreach (var item in allModules) { var moduleOptionsBuilder = new ModuleShellOptionsBuilder <TModule>(item); configureModuleOptionsBuilder(moduleOptionsBuilder); var moduleShellOptions = moduleOptionsBuilder.Build(); var moduleShell = new ModuleShell <TModule>(item, moduleShellOptions); moduleManager.AddModule(moduleShell); } return(moduleManager); }); }
public ModuleManager(ModulesRouter <TModule> modulesRouter) { _modules = new List <IModuleShell <TModule> >(); ModulesRouter = modulesRouter; }