我正在使用自定义依赖关系解析器 - NinjectDependencyResolver:IDependencyResolver。
以下是代码:
using System;
using System.Collections.Generic;
using System.Web.Mvc;
using EssentialTools.Models;
using Ninject;
namespace EssentialTools.Infrastructure
{
public class NinjectDependencyResolver : IDependencyResolver
{
private IKernel kernel;
public NinjectDependencyResolver(IKernel kernelParam)
{
kernel = kernelParam;
AddBindings();
}
public object GetService(Type serviceType)
{
return kernel.TryGet(serviceType);
}
public IEnumerable<object> GetServices(Type serviceType)
{
return kernel.GetAll(serviceType);
}
private void AddBindings()
{
kernel.Bind<IValueCalculator>().To<LinqValueCalculator>();
}
}
}
我在NinjectWebCommon中注册了解析器。 而且我知道我的AddBindings受到了冲击,因为我可以设置断点并点击并检查。 或者将调试语句写入输出窗口。
但我不认为我的GetService受到了打击。 我无法达到断点,我无法将调试语句写入窗口。
我之前已经设置了这个,并且我总是能够在GetServiceType(类型serviceType)中点击断点,并且看到serviceType是HomeController只是为了证明它正在工作。
我知道它已注册,因为AddBindings正在工作,如果我将它注释掉它就会错误。
此外,如果我注释掉GetService,那么我还没有实现它的错误。但即使实施不使用。它就像使用默认设置一样。
我在配置中遗漏了什么?