コード例 #1
0
        private static void VisualizeIndentedObjectSubGraph(
            this InstanceProducer dependency,
            int indentingDepth,
            bool last,
            HashSet <InstanceProducer> set,
            ObjectGraphStringBuilder objectGraphBuilder)
        {
            bool isCyclicGraph = set.Contains(dependency);

            if (isCyclicGraph)
            {
                objectGraphBuilder.AppendCyclicInstanceProducer(dependency, last);
                return;
            }

            set.Add(dependency);

            try
            {
                dependency.VisualizeIndentedObjectGraph(indentingDepth, last, set, objectGraphBuilder);
            }
            finally
            {
                set.Remove(dependency);
            }
        }
コード例 #2
0
        internal static string VisualizeIndentedObjectGraph(
            this InstanceProducer producer, VisualizationOptions options)
        {
            if (!producer.IsExpressionCreated)
            {
                return(ExpressionNotCreatedYetMessage);
            }

            var set = new HashSet <InstanceProducer>(InstanceProducer.EqualityComparer);
            var objectGraphBuilder = new ObjectGraphStringBuilder(options.IncludeLifestyleInformation);

            producer.VisualizeIndentedObjectGraph(
                indentingDepth: 0, last: true, set: set, objectGraphBuilder: objectGraphBuilder);

            return(objectGraphBuilder.ToString());
        }
コード例 #3
0
        private static void VisualizeIndentedObjectGraph(
            this InstanceProducer producer,
            int indentingDepth,
            bool last,
            HashSet <InstanceProducer> set,
            ObjectGraphStringBuilder objectGraphBuilder)
        {
            objectGraphBuilder.BeginInstanceProducer(producer);

            var dependencies = producer
                               .GetRelationships()
                               .Select(relationship => relationship.Dependency)
                               .ToList();

            for (int counter = 0; counter < dependencies.Count; counter++)
            {
                var dependency = dependencies[counter];
                dependency.VisualizeIndentedObjectSubGraph(
                    indentingDepth + 1, counter + 1 == dependencies.Count, set, objectGraphBuilder);
            }

            objectGraphBuilder.EndInstanceProducer(last);
        }