如何将 IEventBroker 注入 Eclipse RCP 应用程序的应用程序模型中未定义的 class?

How to inject IEventBroker into a class not defined in Application Model of Eclipse RCP application?

我有两个 classes,class Aclass BA是在Application Model中定义的RCP应用中用于显示Part的class。 B是一个自定义的class,用于获取数据,每当数据改变时,它应该通知class A更新相关 UI。我问了一个问题 关于如何使这两个 class 协调。但是现在的问题是,由于 B 未在应用程序模型中定义,因此每当我调用 eventBroker.post() 在 class B.

我在调用 class B:

时尝试了以下方法
B b = new B();
ContextInjectionFactory.inject(b,IEclipseContext);
b.execute();

我不知道如何获取上面代码中未定义的 IEclipseContext,因为上面代码未在 Application 中定义的 class 中执行型号。如果有人能阐明这个问题,我将不胜感激。

您确实必须从注入系统确实知道的某个地方开始,并使用注入系统创建所有中间体 类。

这可能类似于命令处理程序,您可以在其中使用 ContextInjectionFactory.makeContextInjectionFactory.inject 到 create/inject 和 类。还有其他几种方法可以通过注入创建 类,但它们都需要您从应用程序模型了解的内容开始。

对于 类 您希望在应用程序中创建它们的整个应用程序都可用 LifeCycle class 是应用程序模型已知的另一个可能位置。

或者,您可以使用 OSGi 服务上下文,它可以通过以下方式访问:

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

IEclipseContext serviceContext = EclipseContextFactory.getServiceContext(bundleContext);

此上下文的内容非常有限,但包含事件代理。