這是錯誤消息我得到:錯誤獲取Ninject和的WebAPI V1(MVC4)工作
"Type 'GDMServices.Controllers.DmpeController' does not have a default constructor",
我開始走這條路的答案出現了幾個用戶的工作,但我開始這些錯誤讓我覺得有些事情已經改變,並放棄了這個解決方案其中一個錯誤是無法解析IRequest,即使在我添加了對System.Web.Http.Services(我認爲是MVC3依賴項)的引用之後。
我看到一對夫婦的例子使用的統一,但我真的想堅持Ninject。
控制器:
public class DmpeController : ApiController
{
private readonly Logger _logger;
private readonly IDmpeService dmpeService;
public DmpeController(Logger logger, IDmpeService service)
{
this._logger = logger;
this.dmpeService = service;
}
.....
在App_Start文件夾,從產生的NinjectWebCommons.cs的NuGet安裝:
//The class is untouched from generated form except the RegisterServices method where I added my bindings:
private static void RegisterServices(IKernel kernel)
{
kernel.Bind<IAppSettings>().To<AppSettings>();
kernel.Bind<IDmpeService>().To<DmpeService>();
}
[更新]還要說明一點,我卡與.net 4.0所以我無法升級任何軟件包。
所以我回來嘗試上面引用的修復和IRequest的問題依然存在,「無法找到類型或命名空間名稱'IRequest'(你是否缺少using指令或程序集引用?)C: \ dev的\混帳回購\ GDM.Data \ GDMServices \ SERVICES \ App_Start \ NinjectWebCommon.cs」。我按規定安裝了Ninject.MVC3,但無濟於事。
public class NinjectScope : IDependencyScope
{
protected IResolutionRoot resolutionRoot;
public NinjectScope(IResolutionRoot kernel)
{
resolutionRoot = kernel;
}
public object GetService(Type serviceType)
{
IRequest request = resolutionRoot.CreateRequest(serviceType, null, new Parameter[0], true, true);
return resolutionRoot.Resolve(request).SingleOrDefault();
}
public IEnumerable<object> GetServices(Type serviceType)
{
IRequest request = resolutionRoot.CreateRequest(serviceType, null, new Parameter[0], true, true);
return resolutionRoot.Resolve(request).ToList();
}
...