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


C# ClassDeclarationSyntax.DescendantNodesAndSelf方法代码示例

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


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

示例1: AddCodeFixWithUpdatingNonPublicConstructor

    private static void AddCodeFixWithUpdatingNonPublicConstructor(CodeFixContext context, SyntaxNode root,
      Diagnostic diagnostic, ClassDeclarationSyntax classNode)
    {
      var publicModifier = SyntaxFactory.Token(SyntaxKind.PublicKeyword);
      var constructor = classNode.DescendantNodesAndSelf()
        .Where(_ => _.IsKind(SyntaxKind.ConstructorDeclaration))
        .Cast<ConstructorDeclarationSyntax>()
        .Single(c => c.ParameterList.Parameters.Count == 0 &&
          !c.Modifiers.Contains(SyntaxFactory.Token(SyntaxKind.PublicKeyword)));

      var newConstructor = constructor.WithModifiers(SyntaxFactory.TokenList(publicModifier));
      var newRoot = root.ReplaceNode(constructor, newConstructor);

      context.RegisterCodeFix(
        CodeAction.Create(
          CheckConstructorsAnalyzerPublicConstructorCodeFixConstants.UpdateNonPublicConstructorToPublicDescription,
          _ => Task.FromResult(context.Document.WithSyntaxRoot(newRoot)),
          CheckConstructorsAnalyzerPublicConstructorCodeFixConstants.UpdateNonPublicConstructorToPublicDescription), diagnostic);
    }
开发者ID:JorgeArellano,项目名称:csla,代码行数:19,代码来源:CheckConstructorsAnalyzerPublicConstructorCodeFix.cs

示例2: AddCodeFixWithUpdatingNonPublicConstructor

    private static void AddCodeFixWithUpdatingNonPublicConstructor(CodeFixContext context, SyntaxNode root,
      Diagnostic diagnostic, ClassDeclarationSyntax classNode, SemanticModel model)
    {
      var publicModifier = SyntaxFactory.Token(SyntaxKind.PublicKeyword);
      var classSymbol = model.GetDeclaredSymbol(classNode);

      if (classSymbol != null)
      {
        var constructor = classNode.DescendantNodesAndSelf()
          .Where(_ => _.IsKind(SyntaxKind.ConstructorDeclaration))
          .Cast<ConstructorDeclarationSyntax>()
          .Single(c => model.GetDeclaredSymbol(c).ContainingType == classSymbol &&
            c.ParameterList.Parameters.Count == 0 &&
            !c.Modifiers.Contains(publicModifier));

        var newConstructor = constructor.WithModifiers(SyntaxFactory.TokenList(publicModifier));

        if (constructor.HasLeadingTrivia)
        {
          newConstructor = newConstructor.WithLeadingTrivia(constructor.GetLeadingTrivia());
        }

        if (constructor.HasTrailingTrivia)
        {
          newConstructor = newConstructor.WithTrailingTrivia(constructor.GetTrailingTrivia());
        }

        var newRoot = root.ReplaceNode(constructor, newConstructor);

        context.RegisterCodeFix(
          CodeAction.Create(
            CheckConstructorsAnalyzerPublicConstructorCodeFixConstants.UpdateNonPublicConstructorToPublicDescription,
            _ => Task.FromResult(context.Document.WithSyntaxRoot(newRoot)),
            CheckConstructorsAnalyzerPublicConstructorCodeFixConstants.UpdateNonPublicConstructorToPublicDescription), diagnostic);
      }
    }
开发者ID:azzazello,项目名称:csla,代码行数:36,代码来源:CheckConstructorsAnalyzerPublicConstructorCodeFix.cs


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