我正在学习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