2

在 RCP 应用程序中拥有某种 DI 的最简单方法是什么?我需要注册依赖项并在应用程序的不同部分使用它们:向导、对话框、属性页等。

我所拥有的:带有大量插件的产品。

我需要什么:在 Eclipse RCP 产品开始时,我需要读取一些文件,将这些数据保存在内存中,并使其可访问不同的 UI 元素(在不同的插件中),而无需使用单例。

创建消费者时,我无法在构造函数中传递这些数据,因为消费者是经常由 RCP 平台创建的 UI 元素,我无法直接访问他们的创建。

4

2 回答 2

6

Eclipse 4.3 支持 DI。这对于作为不使用 Eclipse 3 兼容代码(“e4”模式)的纯 Eclipse 4 应用程序创建的 RCP 最有效。在新应用程序模型中定义的对象是使用 DI 创建的,但也可以使用注入创建其他对象(例如对话框)。

有关 Eclipse 4 RCP 的介绍,请参见http://www.vogella.com/articles/EclipseRCP/article.html

对于 Eclipse 3 应用程序,部件可以使用以下方法获取注入所需的 Eclipse 上下文

IWorkbenchPartSite site = part.getSite();
IEclipseContext parentContext = (IEclipseContext) site.getService(IEclipseContext.class);

用于org.eclipse.e4.core.contexts.ContextInjectionFactory注射。

于 2013-09-23T16:25:18.823 回答
0

或者,如果您仍在使用 Eclipse 3 应用程序,您可以使用 Eclipse Plugin Registry 来定义扩展点和扩展。这也相当于依赖注入,没有注入:-)

于 2014-01-14T17:55:05.347 回答