C# 获取类内容和类名

 

 

        /// <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;
        }

 

posted @ 2023-08-02 15:21  清风神剑  阅读(269)  评论(0编辑  收藏  举报