Roslyn语法生成器AssignmentStatement

时间:2016-12-30 22:47:57

标签: c# roslyn

我正在使用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 *,但似乎无法找到优雅的方法来删除这些多余的括号。

虽然这仍然是合法的语法并且会编译,但它真的很烦人。

有什么想法吗?难道我做错了什么?提示?无望的情况?

*此示例也会在分配中生成带有冗余括号的构造函数。

0 个答案:

没有答案