2016-11-30 27 views
2

我有兩個班,A級B級A是用於在RCP應用程序中顯示零件的類,其在應用程序模型中定義。 B是用於檢索數據的自定義類,每當數據發生更改時,都應通知類A更新相關用戶界面。我問了一個關於如何使這兩個類協調的問題here。但現在問題在於,因爲B未在應用程序模型中定義,所以無論何時我在B中調用,它都會返回null如何將IEventBroker注入未在Eclipse RCP應用程序的應用程序模型中定義的類中?

我已經試過如下的方式,當我調用類

B b = new B(); 
ContextInjectionFactory.inject(b,IEclipseContext); 
b.execute(); 

我不知道怎麼去IEclipseContext未在上面的代碼中定義雖然,因爲上述代碼不在應用程序模型中定義的類中執行。我真的很感激,如果任何人都可以闡明這個問題。

回答

0

你真的必須從注射系統知道的地方開始,並使用注射系統創建所有的中間類。

這可能類似於命令處理程序,您可以使用ContextInjectionFactory.makeContextInjectionFactory.inject來創建/注入類。還有其他幾種方法可以獲得使用注入創建的類,但它們都需要您從應用程序模型知道的東西開始。

對於您希望在整個應用程序中可用的類在應用程序中創建它們LifeCycle class是應用程序模型已知的另一個可能位置。

或者您可以使用它可以訪問的OSGi服務背景:

BundleContext bundleContext = ... your plugin's bundle context 

IEclipseContext serviceContext = EclipseContextFactory.getServiceContext(bundleContext); 

這方面具有非常有限的內容,但不包括事件代理程序。

相關問題