在哪里放置IoC容器配置?

时间:2010-07-29 21:55:01

标签: c# .net dependency-injection structuremap

在解决方案中创建另一个项目只是为了配置容器和注册表,这是一个好习惯吗?我想知道我应该在哪里放置容器配置,我目前在我的全局asax中有所有代码,但是当我添加更多注册表和更高级的注入时,它变得混乱。

4 个答案:

答案 0 :(得分:2)

我通常在我的web项目中创建一个Registry类,我将所有内容与StructureMap绑定在一起。请参阅:http://structuremap.github.com/structuremap/RegistryDSL.htm

如果您的解决方案中的项目有很多自己的配置,那么您可能希望为这些项目提供自己的注册表,但在global.asax中的application_start之前不要实际注册它。

部分IoC正在等待将所有内容捆绑在一起,直到您需要为止。这样它更具可配置性。因此,如果您可以将注册表保留在您的网站中,那么您将拥有最大的灵活性。

答案 1 :(得分:2)

本文使用Castle Windsor作为示例,但无论您使用哪个容器,它都是适用的好建议。

http://devlicio.us/blogs/krzysztof_kozmic/archive/2010/06/20/how-i-use-inversion-of-control-containers.aspx

答案 2 :(得分:0)

我们将我们分成一组类,然后从Global.asax实例化根类。例如:

  IPreferredContainerType container = new RootContainerFactory().Container;
  Application["Container"] = container;
  Container = container;

根容器可以组成特定于模块的容器,使您可以轻松地混合和匹配。只是基本的封装。

答案 3 :(得分:0)

我的每个项目都有自己的注册表和配置(Jeremy称之为Bootstrapper)在你的主应用程序(Win / Web / Console)中。这样,您可以轻松交换主应用程序而无需触及任何注册表。

相关问题