2
我對Ninject很新。我想找到一種方法將控制器的Modelstate進一步傳遞給服務層。如何使用Ninject將ModelState注入爲參數?
我現在所擁有的:
private readonly IAccountService service;
public AccountController(ILanguageService ls, ISessionHelper sh)
{
this.service = new AccountService(new ModelStateWrapper(this.ModelState));
this.languageService = ls;
this.sessionHelper = sh;
}
public AccountService(IValidationDictionary validationDictionary)
{
this.validationDictionary = validationDictionary;
}
想我想以某種方式:
private readonly IAccountService service;
public AccountController(ILanguageService ls, ISessionHelper sh, IAccountService as)
{
this.service = as;
this.languageService = ls;
this.sessionHelper = sh;
}
public AccountService(IValidationDictionary validationDictionary)
{
this.validationDictionary = validationDictionary;
}
但是就像你看到的AccountService將永遠無法接收IValidationDictionary,因爲它從來沒有作爲參數從AccountController發送。
是否有可能實現這一目標?或者這只是我必須忍受的事情之一?
我認爲你答案中的最後一句是正確的解決方案。由於ModelState是運行時數據(並非真正的上下文信息),因此它應該繼續傳遞。在這種情況下使用工廠來構建帳戶服務僅僅是醜陋的,因爲它仍然會通過延遲創建帳戶服務來破壞依賴關係圖,並且不必要地複雜化代碼。所以,爲你的最後一句話+1。 – Steven 2015-03-19 22:09:42