2016-11-15 6 views
0

Я могу добавить код в файл с помощью codeModel.Разработка Vspackage, как получить элементы кода в файле или в классе

Теперь я хочу добавить элементы кода, такие как переменные, в указанный класс.

Итак, первое, что мне нужно сделать, это получить класс, который я хочу изменить. Ниже мой код:

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, я не могу получить любую деталь eles.Item (I).

В TEST.h есть простой класс C++.

Пожалуйста, расскажите, как это сделать.

ответ

0

проблема решена, я могу использовать для перечисления всего элемента кода в элементе.

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

 Смежные вопросы

  • Нет связанных вопросов^_^