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