小编Sha*_*unO的帖子

C#Roslyn API,读取.cs文件,更新类,写回.cs文件

我有这个工作代码,它将.cs文件加载到Roslyn SyntaxTree类中,创建一个新的PropertyDeclarationSyntax,将其插入到类中,然后重新编写.cs文件.我这样做是为了学习经验以及一些潜在的未来想法.我发现在任何地方似乎都没有完整的Roslyn API文档,我不确定我是否有效地执行此操作.我主要担心的是我称之为'root.ToFullString()' - 虽然它有效,但这是正确的方法吗?

using System.IO;
using System.Linq;
using Roslyn.Compilers;
using Roslyn.Compilers.CSharp;

class RoslynWrite
{
    public RoslynWrite()
    {
        const string csFile = "MyClass.cs";

        // Parse .cs file using Roslyn SyntaxTree
        var syntaxTree = SyntaxTree.ParseFile(csFile);
        var root = syntaxTree.GetRoot();
        // Get the first class from the syntax tree
        var myClass = root.DescendantNodes().OfType<ClassDeclarationSyntax>().First();

        // Create a new property : 'public bool MyProperty { get; set; }'
        var myProperty = Syntax.PropertyDeclaration(Syntax.ParseTypeName("bool"), "MyProperty")
                            .WithModifiers(Syntax.Token(SyntaxKind.PublicKeyword))
                            .WithAccessorList(
                            Syntax.AccessorList(Syntax.List(
                                Syntax.AccessorDeclaration(SyntaxKind.GetAccessorDeclaration)
                                    .WithSemicolonToken(Syntax.Token(SyntaxKind.SemicolonToken)),
                                Syntax.AccessorDeclaration(SyntaxKind.SetAccessorDeclaration)
                                    .WithSemicolonToken(Syntax.Token(SyntaxKind.SemicolonToken)))));

        // Add the …
Run Code Online (Sandbox Code Playgroud)

c# roslyn

15
推荐指数
1
解决办法
4710
查看次数

标签 统计

c# ×1

roslyn ×1