【问题标题】:Roslyn create custom expressionRoslyn 创建自定义表达式
【发布时间】:2017-12-07 00:01:52
【问题描述】:

我正在玩 roslyn generation,它工作正常,除非它没有。例如,我想使用 C# 7.0 功能throw expression。但是我在SyntaxFactory 中没有看到任何对应的方法。

现在可以生成类似var foo = bar ?? throw new Exception(); 的东西吗?因为 NullCoalesceExpression expexts ExpressionSyntax,而 ThrowStatement 显然是一个语句。

我尝试从头开始构建它(这就是我在 custom expression 下的意思),但我只收到多个异常 Unexpected SyntaxKind

【问题讨论】:

    标签: c# .net code-generation roslyn c#-7.0


    【解决方案1】:

    我认为用 Roslyn 创建“自定义表达式”没有多大意义。 Roslyn 是 C# 编译器,因此它必须始终准确地表示所有 C# 语法。

    话虽如此,如果您想从字符串创建语法节点,您确实有一些SyntaxFactory.Parse* 方法形式的选项。在您的情况下,它将是 SyntaxFactory.ParseExpression

    至于throw表达式,当然有自己的SyntaxFactory方法:SyntaxFactory.ThrowExpression。只需确保您使用的是最新版本的 Microsoft.CodeAnalysis.CSharp(至少 2.0.0)。

    另外,如果您想知道如何使用 Roslyn API 构建某些代码,Roslyn Quoter 会非常有用。

    【讨论】:

    • 感谢您的回答,但这个quoter 太棒了。我不知道甚至可以存在类似的东西!这真的是少数。等待新的一天尝试所有这些东西。
    • Roslyn Quoter 拯救了我的理智!!!很有帮助!
    猜你喜欢
    • 2023-03-08
    • 1970-01-01
    • 2012-10-30
    • 1970-01-01
    • 1970-01-01
    • 2011-10-10
    • 1970-01-01
    • 2013-07-22
    • 1970-01-01
    相关资源
    最近更新 更多