如何将 IEventBroker 注入 Eclipse RCP 应用程序的应用程序模型中未定义的 class?
How to inject IEventBroker into a class not defined in Application Model of Eclipse RCP application?
我有两个 classes,class A 和 class B。 A是在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.make
或 ContextInjectionFactory.inject
到 create/inject 和 类。还有其他几种方法可以通过注入创建 类,但它们都需要您从应用程序模型了解的内容开始。
对于 类 您希望在应用程序中创建它们的整个应用程序都可用 LifeCycle class 是应用程序模型已知的另一个可能位置。
或者,您可以使用 OSGi 服务上下文,它可以通过以下方式访问:
BundleContext bundleContext = ... your plugin's bundle context
IEclipseContext serviceContext = EclipseContextFactory.getServiceContext(bundleContext);
此上下文的内容非常有限,但包含事件代理。
我有两个 classes,class A 和 class B。 A是在Application Model中定义的RCP应用中用于显示Part的class。 B是一个自定义的class,用于获取数据,每当数据改变时,它应该通知class A更新相关 UI。我问了一个问题 eventBroker.post()
在 class B.
我在调用 class B:
时尝试了以下方法B b = new B();
ContextInjectionFactory.inject(b,IEclipseContext);
b.execute();
我不知道如何获取上面代码中未定义的 IEclipseContext
,因为上面代码未在 Application 中定义的 class 中执行型号。如果有人能阐明这个问题,我将不胜感激。
您确实必须从注入系统确实知道的某个地方开始,并使用注入系统创建所有中间体 类。
这可能类似于命令处理程序,您可以在其中使用 ContextInjectionFactory.make
或 ContextInjectionFactory.inject
到 create/inject 和 类。还有其他几种方法可以通过注入创建 类,但它们都需要您从应用程序模型了解的内容开始。
对于 类 您希望在应用程序中创建它们的整个应用程序都可用 LifeCycle class 是应用程序模型已知的另一个可能位置。
或者,您可以使用 OSGi 服务上下文,它可以通过以下方式访问:
BundleContext bundleContext = ... your plugin's bundle context
IEclipseContext serviceContext = EclipseContextFactory.getServiceContext(bundleContext);
此上下文的内容非常有限,但包含事件代理。