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