コード例 #1
0
        private void CreateCSharpHeadNode(SyntaxNode root)
        {
            var    nodeType = TypeConversion.FromRoslynKind(root.Kind());
            string name     = Extractors.ExtractName(root);

            Head = new CSharpNode(name, nodeType)
            {
                Visibility = Configuration.Visibility
            };
        }
コード例 #2
0
        private void InsertNodeInTree(SyntaxNode node)
        {
            SyntaxKind  topLevelKind = node.Kind();
            bool        isReadonly   = false;
            string      name         = "";
            TypeWrapper type         = new TypeWrapper();

            SyntaxNode[] children = node.ChildNodes().ToArray();
            if (children.Length < 1)
            {
                return;
            }

            switch (topLevelKind)
            {
            case SyntaxKind.PropertyDeclaration:
                type       = Extractors.ExtractTypesFromProperty(GetPropertyTypeNode(node));
                name       = Extractors.ExtractName(node);
                isReadonly = Extractors.IsReadOnly(node);
                break;

            case SyntaxKind.FieldDeclaration:
                SyntaxNode firstChild = children.First();
                type = Extractors.ExtractTypesFromField(firstChild);
                name = Extractors.ExtractName(firstChild);
                break;

            case SyntaxKind.MethodDeclaration:
                /*TODO: Method, can have multiple return/parameters type. Handle that when needed*/
                break;
            }

            var csharpNode = new CSharpNode(name, TypeConversion.FromRoslynKind(topLevelKind))
            {
                Type       = type,
                IsReadOnly = isReadonly
            };

            Head.Children.Add(csharpNode);
        }