当前位置: 首页>>代码示例>>C#>>正文


C# ConstructorDeclarationSyntax.GetLeadingTrivia方法代码示例

本文整理汇总了C#中Microsoft.CodeAnalysis.CSharp.Syntax.ConstructorDeclarationSyntax.GetLeadingTrivia方法的典型用法代码示例。如果您正苦于以下问题:C# ConstructorDeclarationSyntax.GetLeadingTrivia方法的具体用法?C# ConstructorDeclarationSyntax.GetLeadingTrivia怎么用?C# ConstructorDeclarationSyntax.GetLeadingTrivia使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Microsoft.CodeAnalysis.CSharp.Syntax.ConstructorDeclarationSyntax的用法示例。


在下文中一共展示了ConstructorDeclarationSyntax.GetLeadingTrivia方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: AddDocumentationAsync

        /// <summary>
        /// add documentation for the constructor.
        /// </summary>
        /// <param name="context">the code fix context.</param>
        /// <param name="root">the syntax root.</param>
        /// <param name="constructorDeclaration">the constructor declaration syntax.</param>
        /// <param name="documentComment">the document content.</param>
        /// <returns>the resulting document.</returns>
        private Task<Document> AddDocumentationAsync(CodeFixContext context, SyntaxNode root, ConstructorDeclarationSyntax constructorDeclaration, DocumentationCommentTriviaSyntax documentComment)
        {
            var lines = documentComment.GetExistingSummaryCommentDocumentation() ?? new string[] { };
            var standardCommentText = this._commentNodeFactory.PrependStandardCommentText(constructorDeclaration, lines);

            var parameters = this._commentNodeFactory.CreateParameters(constructorDeclaration, documentComment);

            var summaryPlusParameters = new XmlNodeSyntax[] { standardCommentText }
                .Concat(parameters)
                .ToArray();

            var comment = this._commentNodeFactory
                .CreateDocumentComment(summaryPlusParameters)
                .AddLeadingEndOfLineTriviaFrom(constructorDeclaration.GetLeadingTrivia());

            var trivia = SyntaxFactory.Trivia(comment);
            var result = documentComment != null
                ? root.ReplaceNode(documentComment, comment.AdjustDocumentationCommentNewLineTrivia())
                : root.ReplaceNode(constructorDeclaration, constructorDeclaration.WithLeadingTrivia(trivia));

            var newDocument = context.Document.WithSyntaxRoot(result);
            return Task.FromResult(newDocument);
        }
开发者ID:jimmymain,项目名称:Documentation.Analyzers,代码行数:31,代码来源:DocumentationConstructorCodeFixProvider.cs

示例2: TransverseConstructors

        private Constructor TransverseConstructors(ConstructorDeclarationSyntax cds)
        {
            Constructor retConstructor = new Constructor();
            //public int DecisionsCount { get; }
            //public int ExitPoints { get; set; }
            //public bool IsFriend { get; }
            //public bool IsPolymophic { get; }
            //public bool IsPublic { get; }
            //public bool IsStatic { get; }
            //public List<Preprocessor> Preprocessors { get; set; }
            retConstructor.Name = cds.Identifier.ValueText;

            if (cds.HasLeadingTrivia)
            {
                SetOuterComments(retConstructor, cds.GetLeadingTrivia().ToFullString());
            }

            if (cds.HasTrailingTrivia)
            {
                SetInnerComments(retConstructor, cds.GetTrailingTrivia().ToFullString());
            }

            foreach (SyntaxToken st in cds.Modifiers)
            {
                string modifier = System.Threading.Thread.CurrentThread.CurrentCulture.TextInfo.ToTitleCase(st.ValueText);
                Encapsulation encap;
                Qualifiers qual;
                if (System.Enum.TryParse<Encapsulation>(modifier, out encap))
                {
                    retConstructor.Encapsulation.Add(encap);
                }
                else if (System.Enum.TryParse<Qualifiers>(modifier, out qual))
                {
                    retConstructor.Qualifiers.Add(qual);
                }
            }

            //TypeSyntax ts = cds.ReturnType;
            //Model.Type retType = new Model.Type();
            //retType.Name = ts.ToString();
            //retType.IsKnownType = ts.Kind.IsKeywordKind();
            //retType.IsNotUserDefined = ts.Kind.IsKeywordKind();
            //TODO
            //rettype.generictype
            //retConstructor.ReturnType = retType;

            ParameterListSyntax pls = cds.ParameterList;
            foreach (ParameterSyntax ps in pls.Parameters)
            {
                retConstructor.Parameters.Add(TraverseParamaters(ps));
            }
            BlockSyntax bs = cds.Body;
            var labelStatements = from aLabelStatement in bs.ChildNodes().OfType<LabeledStatementSyntax>() select aLabelStatement;
            foreach (LabeledStatementSyntax lss in labelStatements)
            {
                retConstructor.LabelStatements.Add(TraverseLabelStatements(lss));
            }

            var goToStatements = from aGoToStatement in bs.ChildNodes().OfType<GotoStatementSyntax>() select aGoToStatement;
            foreach (GotoStatementSyntax gtss in goToStatements)
            {
                GoTo gt = TraverseGoToStatements(gtss);
                retConstructor.GoToStatements.Add(gt);
            }

            //Preprocessors = new List<Preprocessor>();
            //Base = new List<InvokedMethod>();
            //Decisions = new Decisions();

            var accessVarsDecl = from aAccessVarsDecl in bs.ChildNodes().OfType<LocalDeclarationStatementSyntax>() select aAccessVarsDecl;
            foreach (LocalDeclarationStatementSyntax ldss in accessVarsDecl)
            {
                Method tempMethod = TransverseAccessVars(ldss);
                retConstructor.AccessedVariables.AddRange(tempMethod.AccessedVariables);
                retConstructor.InvokedMethods.AddRange(tempMethod.InvokedMethods);
            }

            var ifStatements = from aIfStatement in bs.ChildNodes().OfType<IfStatementSyntax>() select aIfStatement;
            foreach (IfStatementSyntax iss in ifStatements)
            {
                int exitPoints = retConstructor.ExitPoints;
                Decisions tempDecision = TraverseIfStatements(iss, ref exitPoints);
                retConstructor.Decisions.IfStatements.AddRange(tempDecision.IfStatements);
                retConstructor.Decisions.ElseStatements.AddRange(tempDecision.ElseStatements);
                retConstructor.Decisions.ForEachStatements.AddRange(tempDecision.ForEachStatements);
                retConstructor.Decisions.ForStatements.AddRange(tempDecision.ForStatements);
                retConstructor.Decisions.WhileLoops.AddRange(tempDecision.WhileLoops);
                retConstructor.Decisions.DoWhileLoops.AddRange(tempDecision.DoWhileLoops);
                retConstructor.Decisions.Catches.AddRange(tempDecision.Catches);
                retConstructor.Decisions.SwitchStatements.AddRange(tempDecision.SwitchStatements);
                retConstructor.ExitPoints = exitPoints;
            }
            var elseStatements = from aElseStatements in bs.ChildNodes().OfType<ElseClauseSyntax>() select aElseStatements;
            foreach (ElseClauseSyntax ecs in elseStatements)
            {
                int exitPoints = retConstructor.ExitPoints;
                Decisions tempDecision = TraverseElseClauses(ecs, ref exitPoints);
                retConstructor.Decisions.IfStatements.AddRange(tempDecision.IfStatements);
                retConstructor.Decisions.ElseStatements.AddRange(tempDecision.ElseStatements);
                retConstructor.Decisions.ForEachStatements.AddRange(tempDecision.ForEachStatements);
//.........这里部分代码省略.........
开发者ID:Zenoware,项目名称:RoslynParser,代码行数:101,代码来源:RoslynCSharpParser.cs


注:本文中的Microsoft.CodeAnalysis.CSharp.Syntax.ConstructorDeclarationSyntax.GetLeadingTrivia方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。