我有一个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,我认为它会完成任务。
谢谢你的链接时,InCallScope似乎正是我需要的,我会试试看很快。 – 2013-04-10 11:15:11