Exemplo n.º 1
0
        private void AddNode(TreeNodes targetNodes, string namePath, bool isNamespace)
        {
            var       targetPath  = namePath.Split('.');
            bool      validPath   = false;
            TreeNodes existsNodes = null;

            var validNode = targetNodes.Nodes.Where(x => x.Name.ToLower() == targetPath[0].ToLower());

            if ((validNode != null) && (validNode.Count() > 0))
            {
                existsNodes = validNode.FirstOrDefault();
                validPath   = true;
            }

            if (!validPath)
            {
                TreeNodes childNodes = new TreeNodes
                {
                    Name        = targetPath[0],
                    AddStrings  = targetPath[0],
                    ItemType    = isNamespace ? TreeNodes.NodeTypes.Namespace : TreeNodes.NodeTypes.Primitive,
                    Parent      = targetNodes,
                    Description = isNamespace ? string.Format("Namespace {0}", targetPath[0]) : ""
                };
                targetNodes.AddNode(childNodes);

                if (isNamespace)
                {
                    string nextPath = namePath.Substring(targetPath[0].Length, namePath.Length - targetPath[0].Length);
                    if (nextPath.StartsWith("."))
                    {
                        nextPath = nextPath.Substring(1, nextPath.Length - 1);
                    }
                    if (nextPath.Trim() != "")
                    {
                        this.AddNode(childNodes, nextPath);
                    }
                }
            }
            else
            {
                if (isNamespace)
                {
                    string nextPath = namePath.Substring(targetPath[0].Length, namePath.Length - targetPath[0].Length);
                    if (nextPath.StartsWith("."))
                    {
                        nextPath = nextPath.Substring(1, nextPath.Length - 1);
                    }
                    if (nextPath.Trim() != "")
                    {
                        this.AddNode(existsNodes, nextPath);
                    }
                }
            }
        }
Exemplo n.º 2
0
        private void AddNestedTypeNode(TreeNodes targetNodes, Type target)
        {
            System.Threading.Tasks.Parallel.ForEach(target.GetNestedTypes(BindingFlags.Public | BindingFlags.Static | BindingFlags.Instance), targetmember =>
            {
                TreeNodes memberNodes = new TreeNodes
                {
                    Name       = targetmember.Name,
                    AddStrings = targetmember.Name,
                    ItemType   = TreeNodes.NodeTypes.Method,
                    Parent     = targetNodes
                };

                targetNodes.AddNode(memberNodes);
            });
        }
Exemplo n.º 3
0
        private void AddEventNode(TreeNodes targetNodes, Type target)
        {
            System.Threading.Tasks.Parallel.ForEach(target.GetEvents(BindingFlags.Public | BindingFlags.Static | BindingFlags.Instance), targetmember =>
            {
                TreeNodes memberNodes = new TreeNodes
                {
                    Name        = targetmember.Name,
                    AddStrings  = targetmember.Name,
                    ItemType    = TreeNodes.NodeTypes.Event,
                    Parent      = targetNodes,
                    Description = CreateEventDescription(targetmember)
                };

                targetNodes.AddNode(memberNodes);
            });
        }
Exemplo n.º 4
0
        private void AddTypeNode(TreeNodes targetNodes, Type target)
        {
            if (target.IsAbstract || !target.IsVisible)
            {
                return;
            }

            var typeNamespace = target.Namespace;
            var typeName      = target.Name;

            var       parentNode = this.SearchNodes(targetNodes, typeNamespace);
            TreeNodes newNodes   = new TreeNodes
            {
                Name       = typeName,
                AddStrings = typeName,
                Parent     = parentNode,
                SystemType = target
            };
            string nodesName = typeName;

            if (target.IsGenericType)
            {
                newNodes.ItemType = TreeNodes.NodeTypes.Class;
                if (typeName.Contains("`"))
                {
                    nodesName           = typeName.Substring(0, typeName.LastIndexOf("`"));
                    newNodes.AddStrings = nodesName;
                }
                System.Text.StringBuilder paramStrings = new System.Text.StringBuilder();
                int count = 0;
                foreach (var childArg in target.GetGenericArguments())
                {
                    if (count > 0)
                    {
                        paramStrings.Append(", ");
                    }
                    paramStrings.Append(childArg.Name);
                    count += 1;
                }

                nodesName           += "(" + paramStrings.ToString() + ")";
                newNodes.Name        = nodesName;
                newNodes.Description = string.Format("Class {0}", newNodes.AddStrings);
            }
            else if (target.IsClass)
            {
                newNodes.ItemType    = TreeNodes.NodeTypes.Class;
                newNodes.Description = string.Format("Class {0}", newNodes.AddStrings);
            }
            else if (target.IsEnum)
            {
                newNodes.ItemType    = TreeNodes.NodeTypes.Enum;
                newNodes.Description = string.Format("Enum {0}", newNodes.AddStrings);
            }
            else if (target.IsInterface)
            {
                newNodes.ItemType    = TreeNodes.NodeTypes.Interface;
                newNodes.Description = string.Format("Interface {0}", newNodes.AddStrings);
            }
            else if (target.IsPrimitive)
            {
                newNodes.ItemType    = TreeNodes.NodeTypes.Primitive;
                newNodes.Description = string.Format("{0}", newNodes.AddStrings);
            }
            else if (target.IsValueType)
            {
                newNodes.ItemType    = TreeNodes.NodeTypes.ValueType;
                newNodes.Description = string.Format("{0}", newNodes.AddStrings);
            }
            else
            {
                return;
            }
            if (parentNode == null)
            {
                targetNodes.AddNode(newNodes);
            }
            else
            {
                parentNode.AddNode(newNodes);
            }
            this.AddMethodNode(newNodes, target);
            this.AddPropertyNode(newNodes, target);
            this.AddFieldNode(newNodes, target);
            this.AddEventNode(newNodes, target);
            this.AddNestedTypeNode(newNodes, target);
        }