vpackage开发,如何在文件或类中获取代码元素

本文关键字:获取 取代码 元素 文件 开发 vpackage | 更新日期: 2023-09-27 18:17:51

我可以使用codeModel向文件添加代码。

现在我想添加代码元素,如变量到指定的类。

所以我需要做的第一件事是获得我想要修改的类。下面是我的代码:

IVsProject project = YHMExtensionHelper.GetSelectedProject();
int found;
uint itemId;
VSDOCUMENTPRIORITY[] pdwPriority = new VSDOCUMENTPRIORITY[1];
project.IsDocumentInProject("TEST.h", out found, pdwPriority, out itemId);
if (found == 0 || itemId == 0)
    return;
Microsoft.VisualStudio.OLE.Interop.IServiceProvider oleSp = null;
project.GetItemContext(itemId, out oleSp);
if (oleSp == null)
   return;
ServiceProvider sp = new ServiceProvider(oleSp);
EnvDTE.ProjectItem item = sp.GetService(typeof(EnvDTE.ProjectItem)) as EnvDTE.ProjectItem;
var codeModel = item.FileCodeModel;
var eles = codeModel.CodeElements;
for (int i = 0; i < eles.Count; i++)
{
    var singleItem = eles.Item(i);
    var str = singleItem.Name;
}

但是这行不通,我可以得到eles。Count,我不能得到任何item . item (I).

TEST.h中有一个简单的c++类

请告诉我该怎么做

vpackage开发,如何在文件或类中获取代码元素

问题解决了,我可以使用枚举元素中的所有代码元素。

foreach (CodeElement element in eles)
{
   if(element.Kind == vsCMElement.vsCMElementClass)
   {
      CodeClass cl = element as CodeClass;
      ...
   }
   ...
}