本文整理汇总了C#中Microsoft.CodeAnalysis.CSharp.Syntax.FieldDeclarationSyntax.FirstAncestorOrSelf方法的典型用法代码示例。如果您正苦于以下问题:C# FieldDeclarationSyntax.FirstAncestorOrSelf方法的具体用法?C# FieldDeclarationSyntax.FirstAncestorOrSelf怎么用?C# FieldDeclarationSyntax.FirstAncestorOrSelf使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Microsoft.CodeAnalysis.CSharp.Syntax.FieldDeclarationSyntax
的用法示例。
在下文中一共展示了FieldDeclarationSyntax.FirstAncestorOrSelf方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Initialize
private async Task<Document> Initialize(Document document, FieldDeclarationSyntax localDeclaration,
CancellationToken cancellationToken)
{
var tree = await document.GetSyntaxTreeAsync(cancellationToken);
var root = tree.GetRoot(cancellationToken);
var constructors = root.DescendantNodes().OfType<ConstructorDeclarationSyntax>().ToList();
var csor = constructors.FirstOrDefault();
SyntaxNode visitingRoot = root;
if (csor == null)
{
var oldClass = localDeclaration.FirstAncestorOrSelf<ClassDeclarationSyntax>();
var className = oldClass.Identifier.ToString();
var paramList = RoslynExtensions.GenerateParameters(new[] { localDeclaration.Declaration.Type });
var newCtor = SyntaxFactory.ConstructorDeclaration(
attributeLists: SyntaxFactory.List(new AttributeListSyntax[] { }),
modifiers: SyntaxFactory.TokenList(SyntaxFactory.Token(SyntaxKind.PublicKeyword)),
identifier: oldClass.Identifier,
parameterList: paramList,
initializer: null,
body: SyntaxFactory.Block(new[] { RoslynExtensions.GenerateCtorStatement(RoslynExtensions.GetFieldName(localDeclaration), RoslynExtensions.GetFieldVariableName(localDeclaration.Declaration.Type)) }),
semicolonToken: default(SyntaxToken)
);
csor = newCtor;
visitingRoot = root.InsertNodesAfter(localDeclaration, new[] { newCtor });
}
var cr = new ConstructorRewriter(csor, localDeclaration);
var newRoot = cr.Visit(visitingRoot).WithAdditionalAnnotations(Formatter.Annotation);
//var workspace = MSBuildWorkspace.Create();
//var formatted = Formatter.Format(newRoot, workspace);
return document.WithSyntaxRoot(newRoot);
}