在我從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通過類... –