Asp.net mvc 如何使用Ninject将具有相同接口的不同存储库对象传递到我的服务层?
所以我在过去遇到过这种困惑,并通过不使用Ninject解决了它。现在我正在重做我的站点,我的Ninject似乎又很方便了,但我把自己弄糊涂了。再说一遍 我有一个使用存储库模式的MVC3项目。目前,my Home Controller创建了一些对象,如OrderRepository.cs、CustomerRepository.cs,并将它们发送到名为OrderService.cs和CustomerService.cs的服务。我有一个测试项目,可以用来发送FakeOrderRepository.cs和FakeCustomerRepository.cs。在我完成项目时,这对于单元测试非常方便 然而,我意识到,通过在控制器和单元测试中声明存储库,我正在建立对这些对象的依赖关系。我想做的是不传递任何存储库,让我的服务层使用Ninject说“哦,看,IOrderRepository在我的构造函数中,我最好去获取OrderRepository” 我上一次遇到的问题是,虽然我可以将OrderRepository绑定到构造函数中的任何实例或IOrderRepository,并在我的Global.ascx中将两者绑定在一起,但这似乎让我的单元测试变得非常困难。除非每次运行测试时,我都使用希望传入的对象(在本例中为FakeOrderRepository.cs)切换Global.ascx中的每个绑定,否则我真正的存储库将传入。我如何让我的测试项目和控制器在使用同一IORDrepository接口时通过不同的存储库 嗯,对一些可能很简单的事情的详细解释。我觉得我想得太多了,只是错过了一些关键的理解Asp.net mvc 如何使用Ninject将具有相同接口的不同存储库对象传递到我的服务层?,asp.net-mvc,unit-testing,repository,ninject,Asp.net Mvc,Unit Testing,Repository,Ninject,所以我在过去遇到过这种困惑,并通过不使用Ninject解决了它。现在我正在重做我的站点,我的Ninject似乎又很方便了,但我把自己弄糊涂了。再说一遍 我有一个使用存储库模式的MVC3项目。目前,my Home Controller创建了一些对象,如OrderRepository.cs、CustomerRepository.cs,并将它们发送到名为OrderService.cs和CustomerService.cs的服务。我有一个测试项目,可以用来发送FakeOrderRepository.cs
tldr:我如何在服务层中拥有构造函数,并使用Ninject从控制器和单元测试中传入不同的存储库对象。在服务类中使用构造函数注入来注入存储库是有意义的,您可以从global.asax进行设置 要使单元测试正常工作,您有两个选项:
啊,那就有道理了。当我做测试时,只要把Ninject从等式中去掉,就很容易设置。我想我是想在太多的地方使用Ninject。为这篇文章干杯,链接还包括了我遇到的其他一些问题:)