Ejemplo n.º 1
0
        private RunList<StepDescriptor> BuildRunlist(CodeModelBuilder modelBuilder, string[] finalResources)
        {
            var mutators = AppDomain.CurrentDomain.GetAssemblies()
               .SelectMany(x => x.GetTypes())
               .Where(x => typeof(IMutator).IsAssignableFrom(x) && x.IsClass && !x.IsAbstract)
               .Select(x => new MutatorStepDescriptor(modelBuilder, x));

            var finalResourcesStep = new RequiredResources(finalResources);

            var dependencyNetwork = new DependencyManager<StepDescriptor>(x => x.Provides, x => x.Needs, x => x.OptionalNeeds);

            dependencyNetwork.AddRange(mutators);
            dependencyNetwork.Add(finalResourcesStep);
            dependencyNetwork.RequireElements(finalResourcesStep);

            return dependencyNetwork.CalculateRunList();
        }
Ejemplo n.º 2
0
        private RunList<StepDescriptor> DetermineRunList(IEnumerable<StepDescriptor> descriptors, IList<StepDescriptor> rules)
        {
            var manager = new DependencyManager<StepDescriptor>(x => x.Provides, x => x.Needs, x => x.OptionalNeeds);

            manager.AddRange(descriptors);
            manager.AddRange(rules);

            manager.RequireElements(rules);

            return manager.CalculateRunList();
        }