private void LoadModule(string moduleName) { if (!loadedModules.Contains(moduleName)) { logger.Info($"Loading module {moduleName}"); var apiModule = ModuleUtil.GetModuleForClassName(ModuleUtil.GetModuleAPIClassName(moduleName)); if (apiModule != null) { var deps = ModuleUtil.GetModuleDependencies(apiModule); foreach (var dep in deps) { LoadModule(dep); } apiModule.Init(this); } else { logger.Warn($"Missing API module class for {moduleName}"); } var implModule = ModuleUtil.GetModuleForClassName(ModuleUtil.GetModuleImplClassName(moduleName)); if (implModule != null) { //TODO: do all dependencies have to be declared on the API? implModule.Init(this); } else { logger.Warn($"Missing Impl module class for {moduleName}"); } loadedModules.Add(moduleName); logger.Info($"Finished loading module {moduleName}"); } }