예제 #1
0
        public override void VisitConstructorDeclaration(ConstructorDeclarationSyntax node)
        {
            var isPartial  = node.ChildTokens().Any(x => x.Kind() == SyntaxKind.PartialKeyword);
            var defineName = node.ChildTokens().FirstOrDefault(x => x.Kind() == SyntaxKind.IdentifierToken).ToString();

            var methodArguments = new List <MethodArgument>();

            if (node.ChildNodes().OfType <ParameterListSyntax>().FirstOrDefault().ChildNodes().Any())
            {
                var listNode = node.ChildNodes().OfType <ParameterListSyntax>().FirstOrDefault();
                methodArguments = GetMethodArguments(listNode);
            }

            var startLength     = node.Span.Start;
            var endLength       = node.Span.End;
            var parentNamespace = GetNamespace(DefineKinds.Constructor, startLength, endLength);

            UserDefinitions.Add(new UserDefinition
            {
                DefineKinds     = DefineKinds.Constructor,
                IsPartial       = isPartial,
                Namespace       = parentNamespace,
                DefineName      = defineName,
                DefineFullName  = $"{parentNamespace}.{defineName}",
                MethodArguments = methodArguments,
                SourceFile      = SourceFile,
                StartLength     = startLength,
                EndLength       = endLength,
            });

            base.VisitConstructorDeclaration(node);
        }
예제 #2
0
        internal static DocumentedElement LoadFromSyntaxNode(ConstructorDeclarationSyntax node)
        {
            SyntaxToken syntaxToken = node.ChildTokens().First(token => token.IsKind(SyntaxKind.IdentifierToken));

            return(DocumentedElement.LoadFromSyntaxTokenAndTrivia(syntaxToken, node.GetLeadingTrivia()));
        }