我正在學習ASP.NE4 MVC3。我創建了一個NinjectDependencyResolver類,但我想知道如何去實現ServiceLocator類。目前我收到此錯誤「類型SportsStore.WebUI.Infrastructure.NinjectDependencyResolver似乎並未實現Microsoft.Practices.ServiceLocation.IServiceLocator。 參數名稱:commonServiceLocator」。ninject依賴解析器和服務定位器實現
Global.asax
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
RegisterGlobalFilters(GlobalFilters.Filters);
RegisterRoutes(RouteTable.Routes);
RegisterDependencyResolver();
//ControllerBuilder.Current.SetControllerFactory(new NinjectControllerFactory());
}
private void RegisterDependencyResolver()
{
var kernel = new StandardKernel();
DependencyResolver.SetResolver(new NinjectDependencyResolver(kernel));
}
NinjectDepencyResolver cs
public class NinjectDependencyResolver
{
private readonly IKernel _kernel;
public NinjectDependencyResolver(IKernel kernel)
{
_kernel = kernel;
}
public object GetService(Type serviceType)
{
return _kernel.TryGet(serviceType);
}
public IEnumerable<object> GetServices(Type serviceType)
{
try
{
return _kernel.GetAll(serviceType);
}
catch (Exception)
{
return new List<object>();
}
}
通過這本書去掉的代碼我得到的erorr「錯誤激活IProductRepository利用IProductRepository結合常數 提供商返回null 激活路徑: 2)依賴IProductRepository的注入型ProductController的的構造函數的參數productRepository 1 )請求ProductController 建議: 1)確保提供程序正確處理創建請求。「 – MasterP 2012-02-15 14:22:58
錯誤是由此造成的。 保護覆蓋IController GetControllerInstance(RequestContext requestContext,Type controllerType) { return controllerType == null ? null(IController)ninjectKernel.Get(controllerType); } – MasterP 2012-02-15 14:23:08
那麼你是說問題解決了?如果不是,你能解釋更多嗎? – 2012-02-15 20:43:54