4

我有一个 Windows 服务应用程序,我想将 Ninject 用于我的服务类。有一些服务类使用其他的,比如“较低级别”或更通用的服务类。每个服务通常都需要一个用于数据访问的存储库。

例如,我有一个 IRepository 接口、一个 IServices1 和一个 IServices2 接口。后两者有Services1 和Services2 实现,它们都有一个IRepository 类型的构造函数参数。现在假设 Services1 的实现想要使用 IServices2 接口的一些方法,所以我向 Services1 添加另一个构造函数参数,类型为 IServices2。现在,当我手动实例化 Services1 类时,我会执行以下操作:

var repo = new MyRepository(); // implementing IRepository
var service1 = new Services1(repo, new Services2(repo));

这样我可以确保两个服务都可以使用同一个存储库(这对我来说是一个基本要求)。

我如何使用 Ninject 为这个场景使用正确的 IRepository 注入为我准备一个 IServices1 实例?还是我对这种方法有任何重大的设计错误?

我不在 MVC 平台上,所以我在这里没有请求范围,我认为如果它是 MVC 就可以完成任务。

4

1 回答 1

4

看看 NamedScope 扩展。有这种情况的示例。

https://github.com/ninject/ninject.extensions.namedscope/wiki

于 2013-04-10T10:49:01.910 回答