在评估 Kephas 时,我看到它使用了 Microsoft 的托管可扩展性框架(System.Composition 包)。但是,我们使用 Ninject 进行依赖注入。我是被迫更改 DI 容器,还是可以使用 Ninject?
问问题
40 次
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 回答