我如何在c#的整个解决方案中获得类的名称

本文关键字:解决方案 | 更新日期: 2023-09-27 17:50:35

ProcessStartInfo info = new ProcessStartInfo(@"D:''ss''Class1.cs");

我有一个这种类型的代码,但我想得到"类名"像有多少类在我的解决方案代码将计数类的数量,并在c#中通过代码获得名称。

我如何在c#的整个解决方案中获得类的名称

您要做的事情将不涉及ProcessStartInfo。有两种方法可以做到这一点:如果它被编译,那么加载程序集并使用反射来检查程序集(someAssembly.GetTypes()将是一个很好的开始)。另外,对于检查源代码(未编译的),Roslyn CTP可以用来加载项目/解决方案/类文件,并检查分析树。

如果我没有错,您要搜索解决方案中存在的所有类并获得类名。

下面是伪代码

1-搜索*.cs文件的所有解。

string[] files = System.IO.Directory.GetFiles(path, "*.txt");

2-循环遍历所有*.cs文件并搜索以下模式

namespace [WhatEver the name is]
{
    public class [Class Name]

下面是可以使用

的代码
foreach(string path in files)
{
    string[] lines = System.IO.File.ReadAllLines(path);
    for (int i=0; i < lines.Count(); i++)
            {
                if(lines[i].ToLower().Contains("namespace"))
                {
                    int j = i + 2;
                    if(lines[j].ToLower().Contains("public class"))
                    {
                       string lClassname = lines[j].Replace("public class","");
                       //Save the class name here
                       break;
                    }
                }
            }
}