如何从全名中获取代码元素?

How to get the code element from fullname?

考虑以下几点:

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

这里我们有一个简单的 class 叫做 Foo。 Bar 是 BarClass 类型的 属性 Foo。所以在遍历 Foo 的代码元素时。 Bar 只是一个 属性 而没有 children。

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

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

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

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