我的经理要求我获取项目中每个 .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/