我設計具有以下層如何實例化服務層類自定義成員資格提供
- 數據層應用(W在EF 4.1的頂/通用庫)
- 服務層 - 所有業務邏輯到這裏
- ASP.NET MVC 3網站和ServiceStack.NET Web服務
我想實現一個自定義的成員提供利用我的服務/資源庫
我最初的目的是從提供者中調用服務層方法,但當然,我不能使用DI(通過Ninject),因爲成員資格是由框架處理的,並阻止我使用構造函數注入。
我試圖通過在供應商的初始化方法中實例化我UserService類的一個實例:
userService = (UserService)Activator.CreateInstance(typeof(UserService));
但考慮到用戶業務依賴於信息庫由Ninject注入,這並不爲工作回購從未被注入。
我在這裏錯過了什麼?解決這個問題最簡單的方法是什麼?我應該從一個完全不同的角度來看這個嗎?
編輯:這裏是要求
public class UserService : IUserService
{
private readonly IUserRepository userRepository;
private readonly IUnitOfWork unitOfWork;
public UserService(IUserRepository userRepository, IUnitOfWork unitOfWork)
{
this.userRepository = userRepository;
this.unitOfWork = unitOfWork;
}
//methods(AddUser, etc.)...
}
DI只存在於頂層嗎?在其他層中不需要DI。頂部我引用你的MVC應用程序。 –
我實際上在所有圖層中使用DI來注入圖層之間的依賴關係。服務層類依賴於存儲庫,所以服務層是圍繞接口構建的,並且注入了具體的回購站。 DI只在global.asax的頂層設置,如果這就是你的意思?我的方法是不好的做法? – stephen776
實際上,我的整個體系結構仿照此示例:http://efmvc.codeplex.com/只有我使用Ninject而不是Unity – stephen776