我需要编写一个读取实际 C# .cs 文件的 Windows 应用程序,然后尝试确定该源文件上的哪些过程没有名为“int userID”的参数(它是一种代码检查器)。
是否有一些东西已经将 C# 文件读入某种对象,这些对象具有一个名为“procedureName”的属性和另一个名为“parameterList”的属性......可以查询?
如果不是,那么实现这一目标的最佳方法是什么?
我需要编写一个读取实际 C# .cs 文件的 Windows 应用程序,然后尝试确定该源文件上的哪些过程没有名为“int userID”的参数(它是一种代码检查器)。
是否有一些东西已经将 C# 文件读入某种对象,这些对象具有一个名为“procedureName”的属性和另一个名为“parameterList”的属性......可以查询?
如果不是,那么实现这一目标的最佳方法是什么?
我建议使用 NRefactory 应该能够提供解决方案。以下是一个示例,它将在名称为 bob 的文件中查找所有方法。
CSharpParser parser = new CSharpParser();
SyntaxTree syntaxTree = parser.Parse(@"namespace Test
{
public class TestClass
{
public void Method(string bob)
{
}
}
}");
var result = syntaxTree.Descendants.OfType<MethodDeclaration>().Where(x => x.Descendants.OfType<ParameterDeclaration>().Any(y => y.NameToken.Name == "bob"));
if (result.Any())
{
Console.WriteLine("We Win");
}