【发布时间】:2010-07-29 21:55:00
【问题描述】:
在您的解决方案中创建另一个项目只是为了配置容器和注册表是一种好习惯吗?我想知道我应该把容器配置放在哪里,我目前在我的全局 asax 中拥有所有代码,但是随着我添加更多注册表和更高级的注入,它变得越来越乱。
【问题讨论】:
标签: c# .net dependency-injection structuremap
在您的解决方案中创建另一个项目只是为了配置容器和注册表是一种好习惯吗?我想知道我应该把容器配置放在哪里,我目前在我的全局 asax 中拥有所有代码,但是随着我添加更多注册表和更高级的注入,它变得越来越乱。
【问题讨论】:
标签: c# .net dependency-injection structuremap
我通常在我的 Web 项目中创建一个 Registry 类,在其中我将所有内容与 StructureMap 联系在一起。看到这个:http://structuremap.github.com/structuremap/RegistryDSL.htm
如果您的解决方案中的项目有很多自己的配置,那么您可能希望为这些项目提供自己的注册表,但在 global.asax 中的 application_start 之前不要真正注册它。
IoC 的一部分正在等待将所有内容联系在一起,直到您需要为止。这样它就更可配置了。因此,如果您可以将注册表保留在您的网站中,您将拥有最大的灵活性。
【讨论】:
本文在示例中使用了 Castle Windsor,但无论您使用哪种容器,它都是适用的好建议。
【讨论】:
我们将我们的类分成一组类,然后从 Global.asax 中实例化根类。例如:
IPreferredContainerType container = new RootContainerFactory().Container;
Application["Container"] = container;
Container = container;
根容器可以组成特定于模块的容器,让您可以轻松混合和匹配。只是基本的封装。
【讨论】:
我希望我的每个项目都有自己的注册表,并且配置(Jeremy 称之为 Bootstrapper)位于您的主应用程序(Win/Web/Console)中。这样一来,无需接触任何注册表即可轻松切换您的主应用程序。
【讨论】: