c# - 有没有办法从 .cs 文件中获取函数列表?

标签 c# powershell powershell-2.0

我的经理要求我获取项目中每个 .cs 文件中可用函数的列表。

但是.cs文件的数量是巨大的。

手工很难看。

有什么办法可以通过写脚本或者代码的方式在.cs文件中找到函数名吗?

最佳答案

使用反射。如果所有文件都在项目中,那么您可以使用:

Type[] types = Assembly.GetExecutingAssembly().GetTypes();
foreach (Type toCheck in toProcess)
{
    MemberInfo[] memberInfos = toCheck.GetMembers(BindingFlags.NonPublic | BindingFlags.Public | OtherBindingFlagsYouMayNeed);
    //Loop over the membersInfos and do what you need to such as retrieving their names
    // and adding them to a file
}

如果项目被编译成一个dll那么你可以使用:

Assembly assembly = Assembly.LoadFrom(filePath); //filePath is for the dll
Type[] toProcess = assembly.GetTypes();
//rest of the code is same as above

编辑: 如果您想像 @BAF 提到的那样找出每个物理文件的函数,您将获得程序集的基本目录(通过 .CodeBase),然后执行目录树遍历以查找所有 .cs 文件,然后您将实现一个解析器可以区分每个文件中的方法声明(可能还需要词法分析器来帮助)。两者都没有什么特别困难的,但它们确实需要一些工作,而且太复杂而无法在此处作为答案包含在内。至少这是最简单的答案,它将涵盖我能想到的所有类型的方法声明,除非有人可以建议更简单的方法。

关于c# - 有没有办法从 .cs 文件中获取函数列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12215512/

相关文章:

powershell - 使用 powershell 从 TFS 2010 checkout 文件

powershell - 符合PSCredential的Powershell invoke-command

c# - 必需如果不在 MVC 5 中工作?

c# - 8 字节数组返回长(C# 到 C++)

powershell - 如何在Powershell v3中将输出作为枚举返回?

json - 重新部署到不同区域时出现 Azure 错误

c# - 电源外壳 : Execution Policy

c# - 如何使用 sql helper 从具有 xml 的 sp 获取 xml 数据

c# - 如何在同一项目中运行 IdentityServer 和 WebAPI

powershell - 有没有办法以编程方式获取 Azure AD 客户端 key 的描述?