请考虑以下事项:
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...
}
答案 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