Beispiel #1
0
        private List <ModuleMetadata> GetLoadOrder()
        {
            Dictionary <string, ModuleMetadata> indexedInfo = new Dictionary <string, ModuleMetadata>();
            ModuleDependencySolver solver = new ModuleDependencySolver();
            List <ModuleMetadata>  result = new List <ModuleMetadata>();

            foreach (ModuleMetadata data in loadedModules.Values)
            {
                if (indexedInfo.ContainsKey(data.Name))
                {
                    throw new ModuleLoadException(String.Format(CultureInfo.CurrentCulture,
                                                                Properties.Resources.DuplicatedModule, data.Name));
                }

                indexedInfo.Add(data.Name, data);
                solver.AddModule(data.Name);

                foreach (string dependency in data.Dependencies)
                {
                    solver.AddDependency(data.Name, dependency);
                }
            }

            if (solver.ModuleCount > 0)
            {
                string[] loadOrder = solver.Solve();

                for (int i = 0; i < loadOrder.Length; i++)
                {
                    result.Add(indexedInfo[loadOrder[i]]);
                }
            }

            return(result);
        }
        private List<ModuleMetadata> GetLoadOrder()
        {
            Dictionary<string, ModuleMetadata> indexedInfo = new Dictionary<string, ModuleMetadata>();
            ModuleDependencySolver solver = new ModuleDependencySolver();
            List<ModuleMetadata> result = new List<ModuleMetadata>();

            foreach (ModuleMetadata data in loadedModules.Values)
            {
                if (indexedInfo.ContainsKey(data.Name))
                    throw new ModuleLoadException(String.Format(CultureInfo.CurrentCulture,
                        Properties.Resources.DuplicatedModule, data.Name));

                indexedInfo.Add(data.Name, data);
                solver.AddModule(data.Name);

                foreach (string dependency in data.Dependencies)
                    solver.AddDependency(data.Name, dependency);
            }

            if (solver.ModuleCount > 0)
            {
                string[] loadOrder = solver.Solve();

                for (int i = 0; i < loadOrder.Length; i++)
                    result.Add(indexedInfo[loadOrder[i]]);
            }

            return result;
        }