【发布时间】: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