使用装饰物访问VS Extension的所有方法和类 [英] Accessing all the methods and classes for VS Extension with Adornment

查看:168
本文介绍了使用装饰物访问VS Extension的所有方法和类的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在开发带有装饰的Visual Studio扩展. 我必须将标签放在活动文档中的每个类和方法之上.

I am developing an extension for visual studio with adornment. I have to put label above every class and methods in active document.

现在我的问题是如何获取所有方法和类?我进行了搜索,但没有一个显示出确切的解决方案.

Now my problem is how can I get all the methods and classes? I searched for it but none of them shows the exact solution.

提前谢谢!

推荐答案

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

这就是我开始搜索代码元素的方式.下面显示了此递归方法,该方法在我的整个活动文档中进行搜索,并根据我的要求获取元素列表.

This is how I started my search for code elements.This recursive methods are shown below that searches the whole active document for me and get me list of element as per my requirement.

用于搜索班级:

 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 找到了这个解决方案,它显示了相同的逻辑

I found this solution through GitHub which is showing this same logic.

这篇关于使用装饰物访问VS Extension的所有方法和类的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆