如何从fullname获取代码元素?

时间:2015-09-24 11:37:52

标签: visual-studio-extensions vs-extensibility

请考虑以下事项:

Public class Foo()
{
   public BarClass Bar = new BarClass();
}

这里我们有一个名为Foo的简单类。 Bar是BarClass类型的Foo的财产。因此,当迭代Foo的代码元素时。 Bar只是一个属性,没有孩子。

但是我们可以访问Bar的全名。

如何使用FullName属性创建新的CodeElement实例,以便我可以访问Bar的属性和方法(通过子集合)?

foreach (CodeElement child in Foo)
            {
// Bar shows up as a property, and you can access the Fullname here...
}

1 个答案:

答案 0 :(得分:1)

你的问题不是100%清楚(Bar不是Foo的属性,它是一个字段,没有子节点)。但是要使用自动化模型(EnvDTE)导航代码元素,您需要将EnvDTE.CodeElement强制转换为特定类型(例如EnvDTE.CodeClass或EnvDTE.CodeType)并使用Members属性,而不是Children属性。请参阅:HOWTO: Navigate the code elements of a file from a Visual Studio .NET macro or add-in