gpt4 book ai didi

c# - EnvDTE.CodeNamespace 成员为空?

转载 作者:行者123 更新时间:2023-11-28 02:00:51 25 4
gpt4 key购买 nike

我试图在事件文档中找到一个函数,但是我遇到了一个问题,当函数在命名空间内时,我的代码试图获取 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

此函数返回空代码元素。知道如何解决吗?

P.S:我的扩展在 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;
}

标题.h

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

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

问题是它确实在 cpp 文件中找到了 wmain 和 deneme2 的功能(头文件也不起作用,它给出了类似 -over range 等的东西),但 cpp 文件中的 deneme 也不起作用。

最佳答案

我推荐一种不同的方式来获取当前函数:

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

关于c# - EnvDTE.CodeNamespace 成员为空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39637410/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com