Exemplo n.º 1
0
        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}");
            }
        }