首页 > 编程语言 >C# 获取类内容和类名

C# 获取类内容和类名

时间:2023-08-02 15:36:54浏览次数:29  
标签:endIndex startClass C# tempCount 获取 tempStr fileContent new 类名

 

 

        /// <summary>
        /// 获取类内容和类名
        /// </summary>
        /// <param name="filePath">cs文件地址</param>
        /// <returns></returns>
        private List<KeyValuePair<string, StringBuilder>> GetClass(string filePath)
        {
            // 读取文件内容
            string[] fileContent = File.ReadAllText(filePath).Split("\r\n");
            int tempCount = 0;
            List<KeyValuePair<string, StringBuilder>> tempClass = new List<KeyValuePair<string, StringBuilder>>();
            bool isNameSpace = false;
            StringBuilder sb = new StringBuilder();
            bool startClass = false;
            string className = null, tempStr;
            int startIndex, endIndex;
            for (int i = 0; i < fileContent.Length; i++)
            {
                if (fileContent[i].TrimStart().StartsWith("namespace"))
                {
                    //跳过命名空间下面那行
                    isNameSpace = true;
                    i++;
                    continue;
                }
                //命名空间开始再判断
                if (!isNameSpace)
                    continue;

                sb.AppendLine(fileContent[i]);
                if (fileContent[i].Contains("class"))
                {
                    startIndex = fileContent[i].IndexOf("class ") + 6;
                    tempStr = fileContent[i].Substring(startIndex);
                    endIndex = tempStr.IndexOf(" ");
                    if (endIndex == -1)
                        className = tempStr;
                    else
                        className = tempStr.Substring(0, endIndex);
                }
                if (fileContent[i].TrimStart().StartsWith("{"))
                {
                    tempCount++;
                    startClass = true;
                }
                else if (fileContent[i].TrimStart().StartsWith("}"))
                {
                    tempCount--;
                }
                if (tempCount == 0 && startClass)
                {
                    startClass = false;
                    tempClass.Add(new KeyValuePair<string, StringBuilder>(className, sb));
                    sb = new StringBuilder();
                }
            }

            return tempClass;
        }

 

标签:endIndex,startClass,C#,tempCount,获取,tempStr,fileContent,new,类名
From: https://www.cnblogs.com/cvol/p/17600777.html

相关文章

  • Jest和Mocha对比:两者之间有哪些区别?
    什么是单元测试?所谓单元测试,是对软件中单个功能组件进行测试的一种软件测试方式,其目的是确保代码中的每一个基本单元都能正常运行。因此,开发人员在应用程序开发的整个过程(即代码编写过程)中都需要进行单元测试。在进入到软件开发的下一阶段之前,对程序进行单元测试是一个不错的......
  • 认识开源许可证——Apache2.0
    「七彩话合规」是棱镜七彩推出的全新内容板块,涵盖开源合规基础知识、常见许可证翻译、常见合规问答等多个模块。棱镜七彩开源合规部门专注于开源许可证研究,为您提供权威的许可证翻译参考和问题解答。开源合规第一步:理解开源许可证开源许可证,其本质是一种格式合同,通过特定的条款授予......
  • 个人VSCode Vim基础配置文件
    基础配置项vscode-vim插件由于是一款模拟器,所以它的配置文件是放在settings.json文件中,而不是vimrc文件中,个人也并不推荐将配置放在vimrc文件中,因为这会导致多端同步变的复杂,尽管这款插件可以支持从vimrc文件中读取配置。下面是一些我会在使用vscode-vim插件时配置的vim选项,直接......
  • WebDAV之π-Disk派盘 + Mountain Duck
    MountainDuck是来自国外的一款方便实用,功能强大的云存储空间本地管理工具。它可以帮助我们在windows电脑上将远程FTP空间、WebDAV、Swift、S3、Azure、Rackspace、GoogleCloud等云存储服务转入本地进行管理,使用任何应用程序即可打开远程文件,并在本地盘上工作。你可以将云目录......
  • Dao继承JpaRepository 、 JpaSpecificationExecutor 接口
    @RepositorypublicinterfaceUserRepositoryextendsJpaRepository<User,Integer>{xxx...}关于Dao继承JpaRepository:前要:Jpa:JPA是Spring提供的一种ORM,ORM:对象关系映射(ObjectRelationalMapping,简称ORM),简单的说,ORM是通过使用描述对象和数据库之间映射的......
  • pandas模块------------------------筛选条件loc(多条件选择)
    loc在选择时应用条件。单条件:选择大于90成绩的学生信息:importpandasaspdsource=pd.read_excel('C:/Users/Administrator/Desktop/source.xlsx')print(source)da=source.loc[(source['成绩']>90)]print(da)G:\Python3.8解释器\python.exeC:/Users/Administrator/P......
  • typescript 快速入门
    1.环境搭建1.1安装安装typescriptyarnaddtypescript-g安装ts-nodets-node是一个在内存中运行的TypeScript运行时,它可以直接运行ts文件,而不需要将ts文件编译成js文件yarnaddts-node-g安装@types/node@types/node是node.js的类型定义文件,......
  • 邮件钓鱼之sendcloud邮件伪造
    0x00整体流程找一个未被加入到黑名单的可提供SMTP协议发件的网站,如smtp2go,sendcloud安装邮件伪造工具swaks制作钓鱼邮件内容eml文件及多种情况发送伪造邮件0x01邮件服务sendcloud本文以sendcloud为例,地址:https://www.sendcloud.net首先进行注册,注册后找到我们需要的东......
  • C/C++ 数据结构五大核心算法之分治法
    分治法——见名思义,即分而治之,从而得到我们想要的最终结果。分治法的思想是将一个规模为N的问题分解为k个较小的子问题,这些子问题遵循的处理方式就是互相独立且与原问题相同。两部分组成:分(divide):递归解决较小的问题治(conquer):然后从子问题的解构建原问题的解三个步骤:1、......
  • getClassLoader(),getResource()
    在Java中,`getClassLoader()`方法是`java.lang.Class`类的一个方法,它用于获取加载某个类的类加载器对象。这个方法返回的是一个`ClassLoader`类的实例。以下是`getClassLoader()`方法的源代码示例:publicClassLoadergetClassLoader(){  ClassLoadercl=getClassLoader0(......