我創建一個ASP分層的Web應用程序,我有以下結構:C#接口繼承 - 不能識別的基礎接口的方法
IService<T>
public interface IService<T> {
IEnumerable<T> GetAll();
void Add(T entity);
void Delete(T entity);
Service<T>
public class Service<T> where T : class {
private IRepository<T> _repository;
public Service(IRepository<T> repo) {
this._repository = repo;
}
public IEnumerable<T> GetAll() {
return _repository.GetAll();
}
etc
然後我也有一些「定製服務」:
ICategoryService
public interface ICategoryService : IService<Category> {
IEnumerable<Category> GetProductCategories(int productId);
}
CategoryService
public class CategoryService : Service<Category>, ICategoryService {
private IRepository<Category> _repository;
public CategoryService(IRepository<Category> repo) : base(repo) {
this._repository = repo;
}
public IEnumerable<Category> GetProductCategories(int productId) {
// implementation
}
控制器:
public class ProductController : Controller {
private ICategoryService _cservice;
public ProductController(ICategoryService cservice) {
this._cservice = cservice;
}
´
// other methods
public ActionResult Categories() {
IEnumerable<Category> categories = _cservice.GetAll(); // doesn't work
}
我試圖訪問.GetAll()方法在我的控制器,這是在IService定義並且在實施服務,但我得到一個'ICategoryService不包含GetAll的定義'錯誤,我不知道爲什麼。
我可以從我CategoryService訪問.GetAll()方法,所以我不知道爲什麼我不能(通過依賴注入)從CategoryService實例訪問它。
你能充分展示你的控制器代碼(道具和構造函數)?這段代碼看起來不錯。 –
所有我能想到的是你有ICategoryService或IService定義了兩次,它需要在錯誤接口 –
更新與控制器的代碼 – Acla