Ejemplo n.º 1
0
        internal static void WriteEnumerableInstance(this TreeNode parent, LamarServicesInput input,
                                                     IEnumerableInstance instance, bool isDefault, string prefix)
        {
            var description = instance.ServiceType.CleanFullName();

            if (prefix.IsNotEmpty())
            {
                description = prefix + description;
            }

            var top = parent.AddNode(description);

            var number = 0;

            foreach (var child in instance.Elements)
            {
                var elementPrefix = ((++number).ToString()).PadLeft(3) + ". ";

                switch (child.Lifetime)
                {
                case ServiceLifetime.Transient:
                    top.WriteBuildPlanNode(input, child, false, elementPrefix);
                    break;

                case ServiceLifetime.Scoped:
                    top.AddNode($"{elementPrefix}Resolved from Scope -> {child.ToDescription()}");
                    break;

                case ServiceLifetime.Singleton:
                    top.AddNode($"{elementPrefix}Singleton Resolved from Root -> {child.ToDescription()}");
                    break;
                }
            }
        }
Ejemplo n.º 2
0
 public static void WriteBuildPlanNode(this TreeNode parent, LamarServicesInput input,
                                       Instance instance, bool isDefault, string prefix = null)
 {
     if (instance is ConstructorInstance c)
     {
         parent.WriteConstructorBuildPlan(input, c, isDefault, prefix);
     }
     else if (instance is IEnumerableInstance e)
     {
         parent.WriteEnumerableInstance(input, e, isDefault, prefix);
     }
     else
     {
         parent.WriteSingleInstanceNode(input, instance, isDefault, prefix);
     }
 }
Ejemplo n.º 3
0
        public static TreeNode WriteSingleInstanceNode(this TreeNode parent, LamarServicesInput input, Instance instance,
                                                       bool isDefault, string prefix = null)
        {
            prefix ??= $"[blue]{instance.Lifetime}:[/] ";

            var description = $"{prefix}{instance.ToDescription().Replace("[", "[[").Replace("]", "]]")}";

            if (input.VerboseFlag && !instance.IsInlineDependency())
            {
                description += $" named '{instance.Name}'";
            }

            if (isDefault)
            {
                description = description.BoldText();
            }

            return(parent.AddNode(description));
        }
Ejemplo n.º 4
0
        public static void WriteConstructorBuildPlan(this TreeNode parent, LamarServicesInput input,
                                                     ConstructorInstance instance, bool isDefault, string prefix = null)
        {
            var top = parent.WriteSingleInstanceNode(input, instance, isDefault, prefix);

            foreach (var argument in instance.Arguments)
            {
                string argumentPrefix = $"[blue]{argument.Parameter.Name}[/]: ";
                if (argument.Instance.IsInlineDependency())
                {
                    top.WriteBuildPlanNode(input, argument.Instance, false, argumentPrefix);
                }

                switch (argument.Instance.Lifetime)
                {
                case ServiceLifetime.Transient:
                    top.WriteBuildPlanNode(input, argument.Instance, false, argumentPrefix);
                    break;

                case ServiceLifetime.Scoped:
                    top.AddNode($"{argumentPrefix} = Resolved from Scope -> {argument.Instance.ToDescription()}");
                    break;

                case ServiceLifetime.Singleton:
                    top.AddNode($"{argumentPrefix} = Singleton Resolved from Root -> {argument.Instance.ToDescription()}");
                    break;
                }
            }

            foreach (var setter in instance.Setters)
            {
                var setterPrefix = $"[blue]Set {setter.Property.Name} = [/]";
                top.WriteBuildPlanNode(input, setter.Instance, false, setterPrefix);
            }

            // setters
        }