2013-04-10 58 views
4

我有一个Windows服务应用程序,我想使用Ninject作为我的服务类。有一些服务类别使用其他服务类别,比如说“较低级别”或更通用的服务类别。每项服务通常都需要一个数据存取库。如何告诉Ninject为嵌套构造函数注入相同的实例?

因此,例如我有一个IRepository接口,一个IServices1和一个IServices2接口。后两者有Services1和Services2实现,都有一个类型为IRepository的构造函数参数。现在假定Services1的实现想要使用IServices2接口的一些方法,所以我给Services1添加了另一个构造函数参数,其类型为IServices2。现在,当我手动实例化服务1类,我会做吊环,如:

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

这样我可以保证这两个服务会以相同的存储库(这是我的基本要求)工作。

我该如何使用Ninject来为这个scneario准备一个IServices1实例,并给我适当的IRepository注入?或者我有这种方法有任何主要的设计错误?

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

回答