【发布时间】:2018-06-21 21:47:41
【问题描述】:
我想创建一个 Roslyn 诊断分析器来查找隐式转换,特别是以下构造:
DateTimeOffset v = new DateTime();
这意味着我要么必须检测隐式转换,要么找到对 DateTimeOffset.op_Implicit(DateTime) 的引用。
但问题在于 Roslyn 诊断分析器处理的是语法,而不是语义模型。因此,我能想到的唯一方法是找出所有可能具有隐式转换的语法结构,并对它们进行语义分析。然而,这非常棘手,因为即使我能够创建一个详尽的可以生成隐式转换的语法结构列表,对语言的更改也很容易引入新的。
我的问题是是否有上述方法的替代方法。 具体来说,是否可以编写一个针对语义模型运行的 Roslyn 诊断分析器? 或者我错过了什么,有没有比我上面描述的更好的替代方案?
【问题讨论】: