我的項目中有幾個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