本文整理汇总了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);
}
示例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);
}
}