Ejemplo n.º 1
0
        /// <summary>
        /// 获取模块的依赖根
        /// </summary>
        /// <param name="sortedModuleCount">排序后的模块数量</param>
        /// <param name="dependencyRootCount">依赖根的数量</param>
        /// <param name="types"></param>
        /// <returns></returns>
        private static IModuleDescriptor[] GetModuleDependencyRoots(int sortedModuleCount, int dependencyRootCount, params Type[] types)
        {
            var moduleDependencyRoots = AppModuleDependencyUtil.GetModuleDependencyRoots(types);

            if (dependencyRootCount >= 0)
            {
                Assert.AreEqual(dependencyRootCount, moduleDependencyRoots.Length);
                DependencyLinkCheck(moduleDependencyRoots);
            }

            Console.WriteLine($"\r\n---------Mermaid DependencyRoots Start----------\r\n{moduleDependencyRoots.ToMermaidString()}\r\n---------Mermaid DependencyRoots End----------\r\n");

            var allModuleDescriptors = AppModuleDependencyUtil.FindAllDependedModuleDescriptors(types);

            Console.WriteLine($"\r\n---------Mermaid allModuleDescriptors Start----------\r\n{allModuleDescriptors.ToMermaidString()}\r\n---------Mermaid allModuleDescriptors End----------\r\n");

            var sortedModuleDescriptors = AppModuleDependencyUtil.SortModuleDescriptors(allModuleDescriptors);

            if (sortedModuleCount >= 0)
            {
                Assert.AreEqual(sortedModuleCount, sortedModuleDescriptors.Length);
                DependencyLinkCheck(allModuleDescriptors);
            }

            Console.WriteLine($"\r\n---------sortedModuleTypes Start----------\r\n{string.Join("\r\n", sortedModuleDescriptors.Select(m => m.Type.Name))}\r\n---------sortedModuleTypes End----------\r\n");

            return(moduleDependencyRoots);
        }
Ejemplo n.º 2
0
        public void LoadIntoServices()
        {
            Assembly assembly = GetSampleModule1Assembly();

            Services.LoadModule(new AssemblyModuleSource(assembly), options => options.AddModuleAsService = true).ModuleLoadComplete();

            var modules = AppModuleDependencyUtil.FindAllDependedModuleDescriptors(assembly.GetTypes().FirstOrDefault(m => typeof(IAppModule).IsAssignableFrom(m)));

            var sortedModules = AppModuleDependencyUtil.SortModuleDescriptors(modules);

            foreach (var module in sortedModules)
            {
                Assert.IsTrue(Services.Any(m => m.ServiceType == module.Type));
            }
        }