【发布时间】:2014-01-12 04:40:48
【问题描述】:
我正在尝试将我的控制器转换为使用 DI。
基于article here,我现在得到了这个代码:
namespace HandheldServer.Controllers
{
public class DuckbillsController : ApiController
{
static IDuckbillRepository _platypiRepository;
public DuckbillsController(IDuckbillRepository platypiRepository)
{
if (platypiRepository == null)
{
throw new ArgumentNullException("platypiRepository is null");
}
_platypiRepository = platypiRepository;
}
public int GetCountOfDuckbillRecords()
{
return _platypiRepository.Get();
}
public IEnumerable<Duckbill> GetBatchOfDuckbillsByStartingID(int ID, int CountToFetch)
{
return _platypiRepository.Get(ID, CountToFetch);
}
public void PostDuckbill(int accountid, string name)
{
_platypiRepository.PostDuckbill(accountid, name);
}
public HttpResponseMessage Post(Duckbill Duckbill)
{
Duckbill = _platypiRepository.Add(Duckbill);
var response = Request.CreateResponse<Duckbill>(HttpStatusCode.Created, Duckbill);
string uri = Url.Route(null, new { id = Duckbill.Id });
response.Headers.Location = new Uri(Request.RequestUri, uri);
return response;
}
}
}
...但它不能编译;我得到了,“可访问性不一致:参数类型 'HandheldServer.Models.IDuckbillRepository' 比方法 'HandheldServer.Controllers.DuckbillsController.DuckbillsController (HandheldServer.Models.IDuckbillRepository)'更难访问”
err msg中提到的接口参数类型为:
using System.Collections.Generic;
namespace HandheldServer.Models
{
interface IDuckbillRepository
{
int Get();
IEnumerable<Duckbill> Get(int ID, int CountToFetch);
Duckbill Add(Duckbill item);
void Post(Duckbill dept);
void PostDuckbill(int accountid, string name);
void Put(Duckbill dept);
void Delete(int Id);
}
}
我需要做什么来解决这个错误消息?
【问题讨论】:
标签: c# interface dependency-injection asp.net-web-api inversion-of-control