是否有用于查询C#文件的LINQ查询提供程序?

是否有用于查询C#文件的LINQ查询提供程序?,第1张

概述是否存在用于查询C#文件的LINQ查询提供程序? 我有一个Winforms应用程序,用于帮助我生成代码以及补充Visual Studio对现有代码的编辑功能.我希望能够做的一件事是查询给定的类以查看方法是否存在.或查询类列表,或查询方法签名中具有特定类型的类等. 此外,我希望能够在所述C#文件上运行通常的CRUD,但我意识到这可能超出了这个问题的范围. 解决了! 感谢那些建议Roslyn的人,特别 是否存在用于查询C#文件的liNQ查询提供程序?

我有一个Winforms应用程序,用于帮助我生成代码以及补充Visual Studio对现有代码的编辑功能.我希望能够做的一件事是查询给定的类以查看方法是否存在.或查询类列表,或查询方法签名中具有特定类型的类等.

此外,我希望能够在所述C#文件上运行通常的CRUD,但我意识到这可能超出了这个问题的范围.

解决了!

感谢那些建议Roslyn的人,特别感谢下面Konrad Kokosa提供的代码示例,我能够得到我所需要的.

首先,您需要下载Roslyn DLL(我使用的是NuGet).然后查询.下面是获取类中所有方法的按字母顺序排列的列表的另一个示例:

static List<string> getmethodList(string filename,string classname){    var SyntaxTree = SyntaxTree.Parsefile(filename);    var root = SyntaxTree.GetRoot();    var @class = root.DescendantNodes().OfType<ClassDeclarationSyntax>().FirstOrDefault(md => md.IDentifIEr.ValueText.Equals(classname));    return (List<string>) @class.DescendantNodes().OfType<MethodDeclarationSyntax>().ToList().OrderBy(m => m.IDentifIEr.ValueText).Select(m => m.IDentifIEr.ValueText);}
解决方法 我发现罗斯林非常直观.以下是在指定的类classname中解析指定methodname的源文件的示例:
static voID GetClassMethod(string filename,string classname,string methodname){    var SyntaxTree = SyntaxTree.Parsefile(filename);    var root = SyntaxTree.GetRoot();    var @class = root.DescendantNodes()                      .OfType<ClassDeclarationSyntax>()                      .Where(md => md.IDentifIEr.ValueText.Equals(classname))                      .FirstOrDefault();    var method = @class.DescendantNodes()                      .OfType<MethodDeclarationSyntax>()                      .Where(md => md.IDentifIEr.ValueText.Equals(methodname))                      .FirstOrDefault();}

从这个例子中,您可以轻松地使用文件构建查询所有类.

总结

以上是内存溢出为你收集整理的是否有用于查询C#文件的LINQ查询提供程序?全部内容,希望文章能够帮你解决是否有用于查询C#文件的LINQ查询提供程序?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1249656.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存