以编程方式获取对 Eclipse 中的扩展点有贡献的所有扩展

Programmatically get all extensions contributing to an extension point in Eclipse

例如,我想获取对扩展点有贡献的菜单的所有 id 值:org.eclipse.ui.menus

我可以使用 API IExtensionRegistryIExtension 检索它,但我需要遍历 IConfigurationElement 的树来获取每个的 id 值菜单,这不是一件令人愉快的事情。

eclipse 中有没有更好的 API 来完成这个任务?

IExtensionRegistry 是正确的 API。

获取所有扩展点声明的简单数组的最简单调用是:

IExtensionRegistry registry = Platform.getExtensionRegistry();

IConfigurationElement[] elements = registry.getConfigurationElementsFor("org.eclipse.ui.menus");

主要 IConfigurationElement 的子结构取决于各个扩展点。你必须在你的代码中处理它。