Java 如何将IEventBroker注入到Eclipse RCP应用程序的应用程序模型中未定义的类中?
我有两个班,A类和B类A是用于在RCP应用程序中显示零件的类,该类在应用程序模型中定义B是一个用于检索数据的自定义类,每当数据发生更改时,它应通知类a以更新相关UI。我问了一个关于如何使这两个类协调的问题。然而现在的问题是,由于B未在应用程序模型中定义,因此每当我在类B中调用Java 如何将IEventBroker注入到Eclipse RCP应用程序的应用程序模型中未定义的类中?,java,dependency-injection,eclipse-rcp,e4,Java,Dependency Injection,Eclipse Rcp,E4,我有两个班,A类和B类A是用于在RCP应用程序中显示零件的类,该类在应用程序模型中定义B是一个用于检索数据的自定义类,每当数据发生更改时,它应通知类a以更新相关UI。我问了一个关于如何使这两个类协调的问题。然而现在的问题是,由于B未在应用程序模型中定义,因此每当我在类B中调用eventBroker.post(),它都会返回null 我在调用classB时尝试了以下方法: B b = new B(); ContextInjectionFactory.inject(b,IEclipseContext
eventBroker.post()
,它都会返回null
我在调用classB时尝试了以下方法:
B b = new B();
ContextInjectionFactory.inject(b,IEclipseContext);
b.execute();
我不知道如何获取上面代码中没有定义的
IEclipseContext
,因为上面的代码不是在应用程序模型中定义的类中执行的。如果有人能解释这个问题,我将不胜感激。您必须从注入系统确实知道的地方开始,并使用注入系统创建所有中间类
这可能类似于一个命令处理程序,您可以在其中使用ContextInjectionFactory.make
或ContextInjectionFactory.inject
来创建/注入类。使用注入创建类还有其他几种方法,但它们都要求您从应用程序模型知道的东西开始
对于希望在整个应用程序中可用的类,在应用程序中创建它们是应用程序模型已知的另一个可能的位置
或者,您可以使用OSGi服务上下文,该上下文可以通过以下方式访问:
BundleContext BundleContext=。。。你的插件包上下文
IEclipseContext serviceContext=EclipseContextFactory.getServiceContext(bundleContext);
此上下文的内容非常有限,但确实包括事件代理