在解决方案中创建另一个项目只是为了配置容器和注册表,这是一个好习惯吗?我想知道我应该在哪里放置容器配置,我目前在我的全局asax中有所有代码,但是当我添加更多注册表和更高级的注入时,它变得混乱。
答案 0 :(得分:2)
我通常在我的web项目中创建一个Registry类,我将所有内容与StructureMap绑定在一起。请参阅:http://structuremap.github.com/structuremap/RegistryDSL.htm
如果您的解决方案中的项目有很多自己的配置,那么您可能希望为这些项目提供自己的注册表,但在global.asax中的application_start之前不要实际注册它。
部分IoC正在等待将所有内容捆绑在一起,直到您需要为止。这样它更具可配置性。因此,如果您可以将注册表保留在您的网站中,那么您将拥有最大的灵活性。
答案 1 :(得分:2)
本文使用Castle Windsor作为示例,但无论您使用哪个容器,它都是适用的好建议。
答案 2 :(得分:0)
我们将我们分成一组类,然后从Global.asax实例化根类。例如:
IPreferredContainerType container = new RootContainerFactory().Container;
Application["Container"] = container;
Container = container;
根容器可以组成特定于模块的容器,使您可以轻松地混合和匹配。只是基本的封装。
答案 3 :(得分:0)
我的每个项目都有自己的注册表和配置(Jeremy称之为Bootstrapper)在你的主应用程序(Win / Web / Console)中。这样,您可以轻松交换主应用程序而无需触及任何注册表。