首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >依赖注入

依赖注入
EN

Stack Overflow用户
提问于 2011-03-04 15:31:48
回答 1查看 740关注 0票数 5

我对此很陌生,所以请耐心听我说。

我有一个使用Service/Repository/EF4模式的MVC应用程序,我正在尝试使用Ninject。我让它在控制器上工作,它们是注入了服务的构造函数,但服务是注入了存储库的构造函数,我不确定在哪里处理这个问题。

我正在试着让每一层都只知道下面的一层,对吗?如果是这样的话,MVC应用程序只知道服务层,而服务层只知道存储库层,等等。因此,在我创建绑定的第九对象模块中,我不能说:

代码语言:javascript
复制
Bind(Of IRepository(Of Category)).To(Of EFRepository(Of Category))

我在哪里处理注射?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-03-04 20:33:01

对你的问题的评论确实提供了一些有用的信息。

我通常会组织这样的事情来完成你所说的事情--它只是直接应用于依赖注入的一部分:

  • 我将我的Visual Studio解决方案设置为应用程序中的每个层都有一个项目/程序集。通过这种方式,您必须设置一个从一个层的项目到另一个层的项目的引用,以便能够调用该层。举个例子,你设置了一个从MVC app层到服务层的引用,而不是从MVC app到仓库层的引用,为了防止MVC app访问每个层的项目的仓库层,我将应该使用的接口和类放在项目的顶层命名空间中,并将应该隐藏的接口和其他类的实际实现放在一个子命名空间中,通常称为“directly.
  • Within”或类似的东西;这些类也被声明为“内部”,这确保它们只能在程序集(层)内使用,而不是错误地从另一个层使用。
  • 每个项目/层都声明一个NInject模块,将公共接口绑定到内部实现类。
  • 在应用程序的组合根目录(参见Mark Seeman的链接:Where should I do Injection with Ninject 2+ (and how do I arrange my Modules?)),您可以创建一个加载这些模块的内核。
  • 实际的注入主要是通过构造函数注入完成的,这意味着类本身并不真正知道发生注入的任何事情(尽管有时你必须使用Inject属性,如果您有不明确的constructors).
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5190956

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档