我正在使用Roslyn为我正在构建的工具生成代码。我正在使用SyntaxGenerator(而不是SyntaxFactory),因为我不想为C#和VB.NET编写实现。
根据参考源,AssignmentStatement故意在右侧节点添加括号。 E.g。
Key = (key)
而我正在寻找的是没有括号:
Key = key
示例
这是一个非常基本的,非常淡化的示例,它应该重现这种行为。
public void Example()
{
using (var workspace = new AdhocWorkspace())
{
var generator = SyntaxGenerator.GetGenerator(workspace, LanguageNames.CSharp);
var statement = generator.AssignmentStatement(generator.IdentifierName("Key"), generator.IdentifierName("key"));
var result = statement.NormalizeWhitespace().ToFullString();
}
}
我在这里搜索了SO以及Github,Roslyn Reference Source和各种博客以及examples *,但似乎无法找到优雅的方法来删除这些多余的括号。
虽然这仍然是合法的语法并且会编译,但它真的很烦人。
有什么想法吗?难道我做错了什么?提示?无望的情况?
*此示例也会在分配中生成带有冗余括号的构造函数。