члены EnvDTE.CodeNamespace пусты?

Я пытаюсь найти функцию в активном документе, однако я борюсь с проблемой: когда функция находится внутри пространства имен, мой код пытается получить члены объекта EnvDTE.CodeNamespace, но он возвращает пустое значение, я тоже пробовал Children но там тоже было пусто.

http://www.mztools.com/articles/2006/MZ2006009.aspx

Мой код, как правило, C # реализация этого кода. Это борется в;

If TypeOf objCodeElement Is EnvDTE.CodeNamespace Then
colCodeElements = CType(objCodeElement, EnvDTE.CodeNamespace).Members

эта функция возвращает пустые CodeElements. Есть идеи как это решить?

П.С .: Мое расширение работает с файлами C ++.

Изменить: размещение тестовых кодов.

#include "stdafx.h"#include "Header.h"namespace ns_deneme{
int zaza::func_deneme(int k)
{
a = k;
return a;
}
}

int wmain(int argc, wchar_t* argv[])
{
xaxa a;
int ba = a.deneme2(5);
}

int xaxa::deneme2(int a){
return a;
}

header.h

namespace ns_deneme{
class zaza{
private:
int a;
int func_deneme(int k);
};
}

class xaxa{
public:
int deneme2(int a);
};

Проблема в том, что он находит функции wmain и deneme2 в файле cpp (заголовочный файл также не работает, он дает что-то вроде -over range и т. Д.), Но также не работает deneme из файла cpp.

0

Решение

Я рекомендую другой способ получить текущую функцию:

    EnvDTE.TextSelection ts = DTE.ActiveWindow.Selection as EnvDTE.TextSelection;
if (ts == null)
return;
EnvDTE.CodeFunction func = ts.ActivePoint.CodeElement[vsCMElement.vsCMElementFunction]
as EnvDTE.CodeFunction;
if (func != null)
System.Windows.MessageBox.Show(func.FullName);
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]