我正在为装饰品开发视觉工作室的扩展。 我必须将标签放在活动文档中的每个类和方法之上。
现在我的问题是如何获得所有方法和类?我搜索了它,但没有一个显示确切的解决方案。
提前致谢!
答案 0 :(得分:0)
if(this._dte!=null && this._dte.ActiveDocument!=null)
{
List<CodeClass> foundClasses = new List<CodeClass>();
List<CodeFunction> foundMethod = new List<CodeFunction>();
CodeElements elementsInDocument = this._dte.ActiveDocument.ProjectItem.FileCodeModel.CodeElements;
RecursiveClassSearch(this._dte.ActiveDocument.ProjectItem.FileCodeModel.CodeElements, foundClasses);
RecursiveMethodSearch(this._dte.ActiveDocument.ProjectItem.FileCodeModel.CodeElements, foundMethod);
}
这就是我开始搜索代码元素的方法。下面显示了这个递归方法,它为我搜索整个活动文档,并根据我的要求获取元素列表。
搜索课程:
private static void RecursiveClassSearch(CodeElements elements, List<CodeClass> foundClasses)
{
foreach (CodeElement codeElement in elements)
{
if (codeElement is CodeClass)
{
foundClasses.Add(codeElement as CodeClass);
}
RecursiveClassSearch(codeElement.Children, foundClasses);
}
}
搜索方法:
public static void RecursiveMethodSearch(CodeElements elements, List<CodeFunction> foundMethod)
{
foreach (CodeElement codeElement in elements)
{
if(codeElement is CodeFunction)
{
foundMethod.Add(codeElement as CodeFunction);
}
RecursiveMethodSearch(codeElement.Children, foundMethod);
}
}
我通过GitHub找到了这个解决方案,它显示了同样的逻辑。