Exemplo n.º 1
0
        public IEnumerable <TransformerPath> FindPaths <TTo>(List <TransformerGraph> exclusions = null)
        {
            if (exclusions == null)
            {
                exclusions = new List <TransformerGraph>();
            }

            exclusions.Add(this);

            if (Transformer.CanTransformInto <TTo>())
            {
                return new TransformerPath[] { new TransformerPath(Transformer) }
            }
            ;

            var paths = NextNodes
                        .Where(node => !exclusions.Contains(node))
                        .SelectMany(p => p.FindPaths <TTo>(exclusions.ToList()))
                        .ToArray();

            foreach (var path in paths)
            {
                path.AddFirst(Transformer);
            }

            return(paths);
        }
    }