2012-01-10 84 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 
} 
相關問題