【发布时间】:2010-12-01 07:50:40
【问题描述】:
我有两个相关(与这个问题相关的)项目和其他几个项目的解决方案;
- 具有其他几个项目使用的功能的类库。
- ASP.NET MVC 应用程序。
我的问题基本上是我应该在哪里使用 Ninject 2 进行 IoC,考虑到...
- 类库需要一些 DI 的喜爱,其中包括需要 Web 请求特定会话对象的存储库类(想想工作单元)。
- MVC 应用需要 DI,因为在 Ninject 2 中,您基本上从 NinjectHttpApplication 继承。
- 类库的单元测试需要意识到这一点,才能注入一组不同的存储库。
- 出于同样的原因,需要注入 Web 应用的单元测试。
我在这里把自己描绘成一个心理角落,因为我一开始只看到了三个选项。类库中的 DI,Web 应用程序中的 DI,或两者都有,但每个都有问题:
- 我不能只在类库中进行 DI,因为 MVC 应用需要从 NinjectHttpApplication 继承。
- 我不能只在 MVC 应用程序中进行 DI - 毕竟类库被其他库使用,而且 MVC 应用程序不应该对库的内部了解太多。
- 我想这是我能看到的唯一出路:两个项目的独立 IoC。类库和 MVC 应用都有自己的 IoC 设置,并为他们的东西做 DI,而不是真正关心彼此。
有没有人有一些“最佳做法”或指导方针来说明如何做这样的事情?我无法想象我是第一个遇到这种情况的人,很高兴知道这样做的“正确”方法是什么......
谢谢!
【问题讨论】:
-
如果您真的想获得完整的见解,请复制一些值得挖掘的 cmets stackoverflow.com/questions/5733591/…
标签: asp.net-mvc inversion-of-control ninject