Пример #1
0
        internal static IMiCakeModuleCollection CombineNormalAndFeatureModules(
            IMiCakeModuleCollection normalModules,
            IMiCakeModuleCollection featureModules)
        {
            IMiCakeModuleCollection miCakeModules = new MiCakeModuleCollection();
            var assignFeatureModules = AssignFeatureModules(featureModules);

            Queue <IMiCakeModuleCollection> moduleQueue = new Queue <IMiCakeModuleCollection>();

            moduleQueue.Enqueue(assignFeatureModules.before);
            moduleQueue.Enqueue(normalModules);
            moduleQueue.Enqueue(assignFeatureModules.after);

            var count = moduleQueue.Count;

            for (int i = 0; i < count; i++)
            {
                var modules = moduleQueue.Dequeue();
                foreach (var module in modules)
                {
                    miCakeModules.AddIfNotContains(module);
                }
            }
            return(miCakeModules);
        }
        public static IMiCakeModuleCollection ToMiCakeModuleCollection(this IEnumerable <MiCakeModuleDescriptor> source)
        {
            MiCakeModuleCollection miCakeModules = new MiCakeModuleCollection();

            foreach (var item in source)
            {
                miCakeModules.Add(item);
            }

            return(miCakeModules);
        }
Пример #3
0
        private static (IMiCakeModuleCollection before, IMiCakeModuleCollection after) AssignFeatureModules(IMiCakeModuleCollection featureModules)
        {
            var beforeFeatureModules = new MiCakeModuleCollection();
            var afterFeatureModules  = new MiCakeModuleCollection();

            foreach (var featureModule in featureModules)
            {
                bool depencyIsAfter = featureModule.RelyOnModules.Any(module =>
                                                                      ((IFeatureModule)module.Instance).Order == FeatureModuleLoadOrder.AfterCommonModule);

                var currentOrder = ((IFeatureModule)featureModule.Instance).Order;
                if (!depencyIsAfter && currentOrder == FeatureModuleLoadOrder.BeforeCommonModule)
                {
                    beforeFeatureModules.Add(featureModule);
                }
                else
                {
                    afterFeatureModules.Add(featureModule);
                }
            }

            return(beforeFeatureModules, afterFeatureModules);
        }