有什么方法可以使用 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。我怎样才能做到这一点 ?
有没有办法用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”。