0

在评估 Kephas 时,我看到它使用了 Microsoft 的托管可扩展性框架(System.Composition 包)。但是,我们使用 Ninject 进行依赖注入。我是被迫更改 DI 容器,还是可以使用 Ninject?

4

1 回答 1

1

不必更改您使用的 DI 框架的任何内容,在本例中为 Ninject。但是,根据您的迁移策略,您必须考虑以下事项:

  • Kephas 使用 DI 抽象,理论上可以在任何具体的 DI 实现上运行,因此从技术上讲,您可以在 Ninject 容器的底层使用。

= 但是 =

  • Kephas 广泛使用 DI 元数据,据我所知,Ninject 不支持元数据。

因此,您有以下选择:

  • 使用两个 DI 容器。这对于弥合完整迁移的时间可能是实用的,但从长远来看,我不推荐它。
  • 使用另一个支持元数据的 DI 容器。如果您对提供了内置支持的 System.Composition (MEF) 适配器不满意,可以选择 Autofac,但要使用它,您必须提供容器适配器(这并不复杂)。通过这样做,您将只有一个 DI 容器。

结论:即使您不必更改 DI 框架,由于上述原因,建议您这样做。

您可能需要查看DI wiki以获取更多信息。

免责声明:我是 Kephas 框架的首席开发人员。

于 2017-12-06T20:40:29.807 回答