我正在编写一个使用Roslyn的简单代码重构,如果参数为null,则会引入抛出ArgumentNullException
异常,如下所示:
if (parameter == null)
throw new ArgumentNullException("parameter");
_parameter = parameter;
现在,对于C#6,可以使用nameof
运算符使其更加优雅(可读?类型安全?,无论如何)。从C#7开始,我也可以使用throw表达式:
_parameter = parameter ?? throw new ArgumentNullException(nameof(parameter));
但是,显然,如果项目的语言版本未设置为支持C#6 / C#7或该功能请求的任何语言版本,则无法编译。
鉴于此背景,我的问题很简单。有没有办法确定Roslyn的当前语言版本,所以我可以在世代时决定建议哪些代码片段?或者有没有其他方法可以检测当前C#项目中是否支持某项功能?