我有一個項目,有三層。ASP.NET MVC適當的應用程序和依賴注入分層
一日是DAL
第二是域
第三是介紹
我創造了我的領域層(ICategoryRepository)的接口下面是代碼
public interface ICategoryRepository
{
List<CategoryDTO> GetCategory();
}
我在我的DAL中創建了一個類來在我的域中實現ICategoryRepository。
public class CategoryRepository : ICategoryRepository
{
BookInfoContext _context;
public List<CategoryDTO> GetCategory()
{
_context = new BookInfoContext();
var categoryDto = _context.Categories
.Select(c => new CategoryDTO
{
CategoryId = c.CategroyId,
CategoryName = c.CategoryName
}).ToList();
return categoryDto;
}
}
然後,我在我的域中創建一個類,並在構造函數中傳遞ICategoryRepository作爲參數。
public class CategoryService
{
ICategoryRepository _categoryService;
public CategoryService(ICategoryRepository categoryService)
{
this._categoryService = categoryService;
}
public List<CategoryDTO> GetCategory()
{
return _categoryService.GetCategory();
}
}
我這樣做來反轉控制。而不是我的域將取決於DAL我反轉控制,以便myDAL將取決於我的DOMAIN。
我的問題是,每次我在表示層調用CategoryService時,我需要傳遞ICategoryRepository作爲DAL中構造函數的參數。我不希望我的表示層依賴於我的DAL。
有什麼建議嗎?
謝謝,
我需要在我的categoryService改變什麼..?我嘗試該代碼,它將返回空值。我使用ninject來解決依賴關係,但當我嘗試綁定時,我得到錯誤..我綁定使用此代碼** kernel.Bind()。(); ** –
RAM
我不知道ninject,但作爲任何容器,您必須註冊所有依賴項:存儲庫和服務,以便Container知道如何解析樹上的所有依賴關係:'controller' - >'service' - >'repository'。你註冊了你的倉庫嗎? –
你是對的我只需要註冊我的倉庫.. kernel.Bind()。到();
。我現在的問題是我的表示層對我的DAL有依賴性。感謝兄弟的幫助 – RAM