2012-01-10 46 views
1

我想将多个具体类绑定到Ninject中的接口。我想将多个具体类绑定到Ninject中的接口

ITestService接口和具体实现TestServiceATestServiceB

将它们绑定这样的:

kernel.Bind<ITestService>().To<TestServiceA>(); 
kernel.Bind<ITestService>().To<TestServiceB>(); 

在 “的HomeController(ITestService服务)”,我有这样的:

private ITestService _service; 

public HomeController(ITestService service) 
{ 
    _service = service 
} 

public ActionResult Index() 
{ 
    ViewBag.Message = _service.GetMessage(); 
    return View(); 
} 

它提出了一个错误。我该如何解决它?

+1

什么是错误/异常消息? – nemesv 2012-01-10 13:54:24

回答

4

这是行不通的。你将两件事情绑定到同一个接口上,Ninject无法知道具体实现哪个类。 Ninject offers contextual binding虽然。

一个例子:

// Setup your bindings with a name: 
Bind<ITestService>().To<TestServiceA>().Named("A"); 
Bind<ITestService>().To<TestServiceB>().Named("B"); 


// Then in your controller, specify the name with an attribute: 
public HomeController([Named("A")]ITestService service) 
{ 
    _service = service 
}