ProcessStartInfo info = new ProcessStartInfo(@"D:\\ss\\Class1.cs");
我有这种类型的代码,但我想获得“类名”,比如我的解决方案代码中有多少类将计算类的数量并通过 c# 中的代码获取名称。
ProcessStartInfo info = new ProcessStartInfo(@"D:\\ss\\Class1.cs");
我有这种类型的代码,但我想获得“类名”,比如我的解决方案代码中有多少类将计算类的数量并通过 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;
}
}
}
}