相关疑难解决方法(0)

我应该在哪里注射Ninject 2+(我如何安排我的模块?)

我有一个解决方案,有两个相关的(对这个问题)项目,还有一些其他项目;

  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,而不是真正关心彼此.

有没有人对如何做这样的事情有一些"最佳实践"或指导方针?我无法想象我是第一个在这种情况下结束的人,而且知道"正确"的做法是什么肯定会很好......

谢谢!

asp.net-mvc ninject inversion-of-control

38
推荐指数
1
解决办法
1万
查看次数

DAL - > BLL < - GUI +组合根.如何设置DI绑定?

我与refrences如本描述去一个三层应用程序的答案:

DAL with Repositories -> BLL with services and IRepository <- Asp.net mvc-app
Run Code Online (Sandbox Code Playgroud)

为了让这种依赖注入运行,我看到了几个选项:
1.从web-app添加对DAL的引用,以便能够在应用程序启动时设置绑定.
2.使用具有xml配置的容器
(3.使用反射加载dal-assembly并查找类型)

选项1.很简单,也可以将DAL.dll复制到bin但是我突然重新引入了我努力摆脱的引用.现在可以直接访问存储库.选项2和3似乎不必要地复杂.

没有其他办法吗?

asp.net-mvc dependency-injection inversion-of-control

13
推荐指数
2
解决办法
3862
查看次数

我应该在哪里定义我的NinjectModule和我的工厂?

我在这个网站上阅读了一些内容:

  • 最好在启动应用程序时配置我们的容器
  • 最好避免使我们的库依赖于依赖注入框架
  • 建议使用工厂初始化其属性在运行时定义的对象

我用Ninject.如果我理解这些建议,就必须:

  • 我的库不使用NInject.dll
  • 因此,我的NinjectModules必须在我的应用程序的项目中定义
  • 我的工厂(根据这个原则创建)也必须在我的应用程序的项目中定义,而不是直接在库中定义

这看起来很奇怪,特别是对工厂来说 我有很多项目使用相同的库.所有这些项目是否应该重新定义ninject模块和工厂?

你怎么看 ?

c# dependency-injection ninject

7
推荐指数
1
解决办法
867
查看次数