C# 如何使用Roslyn检测类是否使用Linq?
使用Roslyn,我想检测一个类是否使用Linq 假设一些代码如下:C# 如何使用Roslyn检测类是否使用Linq?,c#,linq,roslyn,C#,Linq,Roslyn,使用Roslyn,我想检测一个类是否使用Linq 假设一些代码如下: //... int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 }; var lowNums = from n in numbers where n < 5 select n; //... /。。。 int[]数字={5,4,1,3,9,8,6,7,2,0}; var lowNums= 从n开始 其中nnn
//...
int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };
var lowNums =
from n in numbers
where n < 5
select n;
//...
/。。。
int[]数字={5,4,1,3,9,8,6,7,2,0};
var lowNums=
从n开始
其中n<5
选择n;
//...
还假设此代码不包括使用System.Linq的文件代码>
我希望能够检测到文件中存在linq语句,并(比如)使用System.linq自动添加。我想检测Linq的查询或方法语法
我有没有办法用Roslyn检测到这一点?我只想知道代码是否使用Linq,不想做任何进一步的处理。给定语法树,您只需搜索或相关节点类型的节点
有关详细信息,请在VS2015中打开该文件并查看语法可视化工具,以查看语法树的确切外观。给定语法树,您只需搜索或相关节点类型的节点即可
有关更多信息,请在VS2015中打开该文件并查看语法可视化工具,以查看语法树的确切外观。我认为您可能需要查找适当的标记,并在解析文件后检查是否有(或最小值集)它们中的一个作为令牌存在,我正在使用类似的东西,但这似乎并没有检测到上面示例中给出的linq代码。我想你可能想寻找合适的标记,在解析完文件后,检查是否有任何(或最小的一组)标记作为标记存在。我正在使用类似的东西,但这似乎无法检测上面示例中给出的linq代码。如果你能给我一些有用的(或者我能做的)代码片段,我会很感激。但是这不能检测到数字。其中(n=>n<5)
版本,对吗?@JakubLinhart:正确。如果要检测到这一点,需要定义实际需要的内容(任何名为Where
的方法、特定的LINQ提供程序、任何带有lambda的扩展方法?)。而且,您可能需要一个语义模型。但这无法检测数字。其中(n=>n<5)
version,对吗?@JakubLinhart:Correct。如果要检测到这一点,需要定义实际需要的内容(任何名为Where
的方法、特定的LINQ提供程序、任何带有lambda的扩展方法?)。而且,您可能需要一个语义模型。