【问题标题】:Analyze nullability inside anonymous types with Roslyn使用 Roslyn 分析匿名类型内的可空性
【发布时间】:2020-03-23 22:11:59
【问题描述】:

这是我想用 Roslyn 分析的一段代码:

object Method()
{
  var rnd = new Random();
  return new { First = "1", Second = rnd.NextDouble() > 0.5 ? "2" : null };
}

我想找出返回属性的可空性。 我知道如何找到ReturnStatementSyntax 及其SemanticModel

我的问题是 C# 不会在匿名类型上创建可空性注释。上面的匿名类型是{ First: string, Second: string },没有注解。

我的理解是,对于匿名类型,编译器仅使用基于数据流分析的可空性(如果我错了,请纠正我)。当悬停Second 时,VS 确实正确地表明它在这个位置可以为空string?

使用 Roslyn (Microsoft.CodeAnalysis),如何提取返回的 First 属性不可为空和 Second 可空的信息?

【问题讨论】:

    标签: c# roslyn nullable-reference-types microsoft.codeanalysis


    【解决方案1】:

    结果证明它确实如你所愿。

    我被 Roslyn 的限制愚弄了很长时间:LINQ 表达式松散了可空性注释(截至 2020 年 4 月),这就是我的测试用例 :(

    【讨论】:

      猜你喜欢
      • 2017-03-04
      • 1970-01-01
      • 1970-01-01
      • 2016-07-02
      • 2022-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多