在我从E3应用程序迁移到纯E4期间出现了另一个问题。DI和继承
在那里我有一个从AbstractRootEditor到FormRootEditor到SashCompositeSubView到TableSubView的调用序列。 在那里我想使用我的EMenuService,但它由于它不能被注入而为空。
AbstractRootEditor是连接到应用程序模型的唯一类(作为由MPartDescriptor创建的MPart)。
我想在AbstractSubView中注入EMenuService,否则我将需要通过我所有的类进行服务。但我没有IEclipseContext,因为我的AbstractSubView没有与应用程序模型(我?)连接。
我有没有机会在AvstractSubView中注入服务?
编辑: 我注意到,在我的AbstractSubView中注入这是不可能的(?),所以我试图把它放到我的TableSubView中。
后gregs发表评论我要展示一些代码: 在AbstractRootEditor:
@PostConstruct
public final void createPartControl(Composite parent, @Active MPart mPart) {
...
ContextInjectionFactory.make(TableSubView.class, mPart.getContext());
首先我有一个例外,说我TableSubView.class了一个无效的构造函数,所以现在的构造方法有:
public TableSubView() {
this.tableInputController=null;
}
,以及我的现场注入:
@Inject EMenuService eMenuService
这是一种不工作,eMenuService仍为空
你在哪里测试'eMenuService'为空?它将在'TableSubView'构造函数中为null,因为字段注入直到构建完成才会完成。 –
我忘了PostConstruct-Method中的所有内容。 好像我必须携带MenuService通过类... –