2016-11-30 28 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); 

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

相关问题