编程语言
首页 > 编程语言> > java – 无需注入即可获得e4服务

java – 无需注入即可获得e4服务

作者:互联网

我正在尝试使用Eclipse RCP 3.x应用程序来使用e4中的一些工具.因此,没有e4xmi文件.

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

public class RunModeService {

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

...
}

看来如果我自己实例化该类(正如我所做的那样),那么就不会发生任何注入.

是否有可能以另一种方式获得这些服务?如果是这样,我可以通过创建一个命令来开始挂钩到e4和DI,该命令的处理程序由框架实例化并且在其中发生注入.

解决方法:

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

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

可以注入IEclipseContext.

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

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

或者你可以使用以下方法对现有的类实例进行注入:

ContextInjectionFactory.inject(myClass, eclipseContext);

在视图或编辑器中,您可以使用以下命令从视图/编辑器站点获取Eclipse上下文:

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

但是PartSite是一个内部类,所以它确实不应该被使用.

标签:java,eclipse,rcp,e4
来源: https://codeday.me/bug/20190629/1321570.html