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

时间:2013-01-02 09:27:36

标签: c#

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

我有这种类型的代码,但我希望得到“类名”,就像我的解决方案代码中的多少个类将计算类的数量,并通过c#中的代码获取名称。

2 个答案:

答案 0 :(得分:3)

您尝试做的事情不会涉及ProcessStartInfo。有两种方法可以解决这个问题:如果编译它,然后加载程序集并使用反射来检查程序集(someAssembly.GetTypes()将是一个好的开始)。或者,为了检查源代码(非编译),可以使用Roslyn CTP加载项目/解决方案/类文件,并检查分析树。

答案 1 :(得分:0)

如果我没错,你想搜索解决方案中存在的所有类并获取类名。

这是伪代码

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