小编bli*_*aro的帖子

使用 Roslyn 向类添加新的字段声明

有什么方法可以使用 roslyn 将成员添加到类中?我想补充:

public int number {get;set;}
Run Code Online (Sandbox Code Playgroud)

更新我使用了这个代码:

       PropertyDeclarationSyntax o =  
       SyntaxFactory.PropertyDeclaration(SyntaxFactory.ParseTypeName("public  
       System.Windows.Forms.Timer"), "Ticker { get; set; }");

       var newRoot = root.ReplaceNode(oldMethod, oldMethod.AddMembers(o));
       newRoot = Formatter.Format(newRoot, new AdhocWorkspace());

       File.WriteAllText(file, newRoot.ToFullString());
Run Code Online (Sandbox Code Playgroud)

但结果是这样的:

   public class ClassChild
{
    public int n;
    private int n2;

    public void method1()
    {
        string c = "";
        Console.WriteLine();
    }

public System.Windows.Forms.TimerTicker { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

}

我想内联 public System.Windows.Forms.TimerTicker { get; 放; } 与 n 和 n2。我怎样才能做到这一点 ?

c# roslyn roslyn-code-analysis

6
推荐指数
1
解决办法
1484
查看次数

使用Roslyn修改方法主体

有没有办法用Roslyn在.cs文件中的方法末尾添加特定的语句?

var code = new StreamReader(@"C:\Users\PersonalUser\Documents\Visual Studio 2015\Projects\SampleToAnalyze\SampleToAnalyze\ClassChild.cs").ReadToEnd();
SyntaxTree tree = CSharpSyntaxTree.ParseText(code);
var root = tree.GetRoot();
var compilation = CSharpCompilation.Create("MyCompilation", new[] { tree },
          new[] { MetadataReference.CreateFromFile(typeof(object).Assembly.Location) });
var model = compilation.GetSemanticModel(tree);

MethodDeclarationSyntax myMethod= tree.GetRoot().DescendantNodes()
                                      .OfType<MethodDeclarationSyntax>().Last();

StatementSyntax myStatement= SyntaxFactory.ParseStatement(@"Console.WriteLine();");
Run Code Online (Sandbox Code Playgroud)

我想在方法“ myMethod”的末尾插入“ myStatement”。

c# syntax roslyn

3
推荐指数
1
解决办法
824
查看次数

标签 统计

c# ×2

roslyn ×2

roslyn-code-analysis ×1

syntax ×1