我有一个需求,需要将cs文件中每个方法的内容都存储成字符串。我想要的是输入一个cs文件后,返回一个字典,其中方法名作为键,方法体作为值。
我已经尝试过正则表达式和反射,但是没有成功,有人能帮忙吗?
谢谢。
我已经尝试过正则表达式和反射,但是没有成功,有人能帮忙吗?
谢谢。
你可以使用Microsoft.CodeAnalysis.CSharp来实现这个功能。
下面的示例应该能够帮助你。它假设你在一个命名空间中有一个类:
var output = new Dictionary<string, string>();
var csFilePath = @"C:\File.cs";
var csFileContent = File.ReadAllText(csFilePath);
SyntaxTree tree = CSharpSyntaxTree.ParseText(csFileContent );
CompilationUnitSyntax root = tree.GetCompilationUnitRoot();
var nds = (NamespaceDeclarationSyntax)root.Members[0];
var cds = (ClassDeclarationSyntax) nds.Members[0];
foreach(var ds in cds.Members){
//Only take methods into consideration
if(ds is MethodDeclarationSyntax){
var mds = (MethodDeclarationSyntax) ds;
//Method name
var methodName = ((SyntaxToken) mds.Identifier).ValueText;
//Method body (including curly braces)
var methodBody = mds.Body.ToString();
output.Add(methodName, methodBody);
}
}
NRefactory是完成这项工作的工具。 请在此处查看:http://laputa.sharpdevelop.net/content/binary/NRefactory.wmv