我的项目中有几个Web API控制器。在大量冗余代码之后,我将它们重构为下面的代码,这似乎是高度可重用的。但是,我突然收到错误,这似乎是由Ninject无法解析控制器绑定引起的。我不知道如何绑定它们。解析控制器:“确保控制器有一个无参数的公共构造函数”
我的代码:
public interface IController<T, TK>
{
DataSourceResult Get(DataSourceRequest request);
T Get(TK id);
HttpResponseMessage Post(T model);
T Put(T model);
TK Delete(TK id);
}
public abstract class BaseController<T, TK> : ApiController, IController<T, TK>
{
private readonly IRepository<T, TK> repository;
public BaseController(IRepository<T, TK> repository)
{
this.repository = repository;
}
/* methods here */
}
public class ReceiptsController : BaseController<ReceiptViewModel, long>
{
public ReceiptsController(IRepository<ReceiptViewModel, long> repository) :
base(repository)
{
}
}
在ninject RegisterServices
方法,我已经试过如下:
kernel.Bind<IController<OntvangstViewModel, long>>().To<OntvangstenController>();
kernel.Bind<BaseController<OntvangstViewModel, long>>().To<OntvangstenController>();
但无论似乎工作。我的实现或继承错误?或者我应该以不同的方式绑定它
看看这个:http://stackoverflow.com/questions/24254189/webapi-make-sure-that-the-controller-has-a-parameterless-public-constructor – 2014-11-05 08:10:05
嗯mmmmm ....我想首先采取看看这个[视频](https://skillsmatter.com/skillscasts/5688-orms-you-re-doing-it-wrong)。然后重做你的应用程序。 – 2014-11-05 08:10:34
在看到大约一百万篇关于为什么存储库是发现火灾以来最好的事情之后,该视频看起来非常有趣。我回家时会看看它。 – 2014-11-05 09:02:22