gpt4 book ai didi

java - 无需注入(inject)即可获得 e4 服务

转载 作者:搜寻专家 更新时间:2023-11-01 03:05:35 28 4
gpt4 key购买 nike

我正在尝试调整 Eclipse RCP 3.x 应用程序以使用 e4 中的某些功能。因此,没有 e4xmi 文件。

特别是,我需要访问某些服务:

public class RunModeService {

@Inject
private static ECommandService commandService;
@Inject
private static EHandlerService handlerService;

...
}

看起来,如果我自己实例化类(正如我正在做的那样),则不会发生任何注入(inject)。

是否可以通过其他方式获得这些服务?如果是这样,我可以开始 Hook 到 e4 和 DI,方法是创建一个命令,其处理程序由框架实例化并在其中发生注入(inject)。

最佳答案

如果您有 IEclipseContext,您可以使用以下方法获取对象:

ECommandService commandService = eclipseContext.get(ECommandService.class);

IEclipseContext 可以注入(inject)。

您可以使用 ContextInjectionFactory 创建您自己的对象,它将为您的对象执行 DI:

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

或者您可以使用以下方法对现有类实例进行注入(inject):

ContextInjectionFactory.inject(myClass, eclipseContext);

在 View 或编辑器中,您可以使用以下方法从 View /编辑器站点获取 Eclipse 上下文:

eclipseContext = ((PartSite)getSite()).getContext();

但是 PartSite 是一个内部类,所以真的不应该使用它。

关于java - 无需注入(inject)即可获得 e4 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23992497/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com