我有两个相关项目(与此问题有关),以及其他几个项目:
1. 类库提供多个项目使用的功能。 2. 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。
是否有人对如何解决这类问题有一些“最佳实践”或指南?我无法想象我是第一个遇到这种情况的人,如果知道“正确”的方法,那肯定是很好的...
谢谢!
1. 类库提供多个项目使用的功能。 2. 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。
是否有人对如何解决这类问题有一些“最佳实践”或指南?我无法想象我是第一个遇到这种情况的人,如果知道“正确”的方法,那肯定是很好的...
谢谢!