在 Eclipse RCP 中获取特定插件的配置元素的有效方法
我想找到在 com.example.plugin
中声明的 org.example.extension.point
的所有扩展。还有比这样做更有效的方法吗
List<IConfigurationElement> result = new ArrayList<IConfigurationElement>();
IConfigurationElement[] allConfigElements =
Platform.getExtensionRegistry.getConfigurationElementsFor("org.example.extension.point");
for (IConfigurationElement ice : allConfigElements) {
if (ice.getDeclaringExtension().getNamespaceIdentifier() == "com.example.plugin")
result.add(ice);
}
return result;
?
I want to find all extensions of org.example.extension.point
declared in com.example.plugin
. Is there a more efficient way to do so than doing
List<IConfigurationElement> result = new ArrayList<IConfigurationElement>();
IConfigurationElement[] allConfigElements =
Platform.getExtensionRegistry.getConfigurationElementsFor("org.example.extension.point");
for (IConfigurationElement ice : allConfigElements) {
if (ice.getDeclaringExtension().getNamespaceIdentifier() == "com.example.plugin")
result.add(ice);
}
return result;
?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
不,没有其他(更有效)的方法(这还不够简单吗?;)。另外,我会使用
ice.getContributor().getName()
而不是ice.getDeclaringExtension().getNamespaceIdentifier()
我真的很想知道你为什么想要按特定贡献者过滤。 - 我的意思是,如果您必须“了解”贡献者,为什么要使用扩展点?扩展点的主要目的是使用控制反转;使用扩展点的主要特点是不知道贡献者。无意冒犯,但您可能正在以不适合的方式使用扩展点......
No there are no other (more efficient) ways (is this not simple enough?;). In addition I'd use
ice.getContributor().getName()
instead ofice.getDeclaringExtension().getNamespaceIdentifier()
I really would like to know why you want to filter by a specific contributor. - I mean if you have to "know" the contributor why are you using the extension point? The main purpose of an extension point is using inversion of control; the main characteristic of using extension points is not knowing the contributor. No offense, but probably you are using extension points in a way they are not intended for...