我有一个解决方案,有两个相关的(对这个问题)项目,还有一些其他项目;
- 具有其他几个项目使用的功能的类库.
- 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,而不是真正关心彼此.
有没有人对如何做这样的事情有一些"最佳实践"或指导方针?我无法想象我是第一个在这种情况下结束的人,而且知道"正确"的做法是什么肯定会很好......
谢谢!