我正在使用asp.net mvc创建一个新的应用程序,我使用munq IOC容器作为我的依赖注入..问题是我想创建一个新的依赖项解决项目,我可以注册mvc项目的所有控制器和基础设施项目的存储库..我必须在我的mvc应用程序中添加依赖性解析项目作为参考,因为这是起点...但问题是为了在这个单独的应用程序中注册控制器我需要参考mvc在依赖关系解决方案项目本身......但这样的事情是不可能的,因为这会导致循环引用..
那么如何解决这个问题呢?或者管理依赖项解析的最佳方法是什么?我不想最终注册Global.asax中的所有内容
2 回答
从Munq.Codeplex.com的源选项卡获取最新版本 . 这个版本有一个视图改进,它是我最熟悉的版本,我写了它 .
要防止循环引用进行注册,请创建一个类项目,其中包含对Munq.Interfaces以及您希望注册的接口和实现的敬意 .
创建一个实现IMunqConfig的类 . 它有一种方法 void RegisterIn(IIocContainer container) . 实现此方法 .
然后在global.asax中
这将在bin目录中搜索具有实现IMunqConfig的类的任何dll,并在每个dll上执行RegisterIn方法 . 所以只需将注册dll放入bin目录并自动注册:)
马修
我不会在与您的存储库相同的项目中注册MVC控制器 . MVC应用程序应“拥有”其组成,包括注册其内部依赖项 .
理想情况下,您的基础设施项目的注册应该在该项目中,特别是如果它可以提供给使用不同DI容器的其他项目 . 如果该项目需要保持与DI无关,那么将DI注册分离到单独的项目中可能是有意义的 .
但我绝对不会让服务(如你的存储库)负责注册其消费者的内部依赖(如你的MVC应用程序) .