添加新的接口

通过将新类型的对象向 org.eclipse.core.component.types 扩展点注册,可以将这些对象传递至部件的构造函数。此时,我们将引入术语组件。组件可以说是任何通过将自变量插入其构造函数从扩展点创建的对象。新型部件是一种组件,但也存在其它类型的组件。

以下示例显示样本类型扩展。此示例指定应该从部件的站点获得 INameable 接口。

<extension
      point="org.eclipse.core.component.types">
   <component
         initializer="org.eclipse.ui.part.SiteInitializer"
         interface="org.eclipse.ui.part.services.INameable"
         implementation="org.eclipse.ui.internal.part.services.NullNameableService"
         singleton="true"
   />
</extension>

initializer 属性指示将在何处使用该接口。例如,字符串“org.eclipse.ui.part.SiteInitializer”意味着在部件的站点使用该接口。如果该接口用于要实现的部件本身,则我们也可能使用了“org.eclipse.ui.part.PartInitializer”。

interface 属性是接口的名称。它必须与组件将在其构造函数中接收的类型完全匹配。如果我们创建提供字符串的扩展和需要对象的组件,则即使它是兼容类型,也不会使用我们的扩展。

implementation 属性标识接口的缺省实现。它指向实现接口的组件类或指向可以创建这些组件类的 ComponentFactory,有关其它信息,请参阅 ComponentFactory 节。此实现用来在组件请求此接口但在其父上下文中找不到此接口时满足依赖项。所有接口都必须提供缺省实现。这意味着正确编写的组件将始终在给定的作用域中工作,而与其父上下文提供了多少依赖项无关。实现不能通过实现其它接口来覆盖或扩展接口属性。其它组件可以通过其已注册的接口来依赖此组件,但不能直接依赖实现类。

singleton 属性指示缺省实现是否是单一的。如果是单一的,则将创建单个实例并在需要该实现的其它每个组件之间共享该实例。如果不是单一的,则将为需要该实现的每个容器创建一个新实例。例如,就部件来说,singleton=:"false" 意味着将为每个部件创建一个实例。