使用DI / IoC容器保持开放状态

时间:2010-02-08 16:00:07

标签: ioc-container

我参与了几个开源项目,它们共同提供了一个应用程序开发框架。我的问题是我应该提供哪些机制来将它们相互整合?

在概念层面,答案很明确 - DI / IoC。 “唯一”的问题是决定哪一个。在几个安装中,我们使用了StructureMap,但随后出现了一个只想要其中一个组件且需要NInject的用户。

因此,为了使问题合格,我应该如何构建我的组件,以便可以使用各种DI / IoC容器将它们相互集成(和第三方)。

我能想到的最好的方法是将所有集成代码分离到单独的项目中,然后为每个受支持的IoC容器创建一个项目,但这听起来像IoC平方一样可疑。

有什么好主意吗?或者我只是在想太难?

P.S。对于好奇的人:NDjango; Bistro; Workflow Server

2 个答案:

答案 0 :(得分:2)

只要您开发可重用的组件,就可以在DI-friendly way without ever referencing any particular DI Container

中实现它们

只有当您需要编写一个需要DI容器的实际运行的应用程序时,但据我所知,您正在开发一个框架,并且最好将其保持为DI中性。

答案 1 :(得分:2)

请参阅this very related question(几乎重复)。

有关集成多个项目同时保持其独立性的灵感,请参阅Castle Project