是否可以在 Luna (Eclipse e4) 上导入的 3.x 基本 Eclipse 代码中使用依赖注入 (DI)

Is it Possible to use the Dependency Injection (DI) in 3.x base Eclipse code imported on Luna (Eclipse e4)

目前我正在尝试将我的 Eclipse 3.x 代码迁移到 e4,我想访问 e4 依赖注入 (DI) 功能。我没有按照 here 所述进行完整迁移。只是我在 e4 之上导入 3.x 源以访问业务逻辑的 DI 功能(而不是 UI)。

我观察到如果我按照这种方法,DI 不工作。在 Luna 上导入的 Eclipse 3.x 源中实现 DI 的任何方法?

如果一个对象只是使用 new xxxx 创建的,那么它不会被注入。

Eclipse 根据 Application.e4xmi(和片段)中的描述创建的对象会自动注入(因此处理程序、部件......)。注入器创建的@Creatable对象也被注入。

您可以使用 ContextInjectionFactory 注入其他对象,这需要您有权访问 IEclipseContext

MyClass myClass = ContextInjectionFactory.make(MyClass.class, eclipseContext);

使用注入创建 class 的新实例。

MyClass myClass = new MyClass();

ContextInjectionFactory.inject(myClass, eclipseContex);

在使用 new 创建对象后注入对象。在这种情况下,class 构造函数不能使用注入。

注意:树形结构中有多个Eclipse Context。一个部分有自己的上下文,因此如果您使用该上下文创建对象,该对象将仅在该部分(以及与该部分关联的任何处理程序等)中可用。

要使对象随处可用,请使用 MApplication 中的 Eclipse 上下文(调用 getContext() 方法)。