【发布时间】:2011-07-05 07:12:45
【问题描述】:
我正在构建一个多层应用程序并尝试尽可能多地保留这些层,因此我为此目的使用了 IoC 容器。无论如何,我正在尝试扩展this article 以将我的业务逻辑验证移动到服务层。除了 ModelStateWrapper 类对 ModelState 本身的依赖之外,我设法解决了所有依赖问题。这是我的课程:
public interface IValidationDictionary
{
void AddError(string key, string errorMessage);
bool IsValid { get; }
}
public class ModelStateWrapper : IValidationDictionary
{
private ModelStateDictionary _modelState;
public ModelStateWrapper(ModelStateDictionary modelState)
{
_modelState = modelState;
}
public void AddError(string key, string errorMessage)
{
_modelState.AddModelError(key, errorMessage);
}
public bool IsValid
{
get { return _modelState.IsValid; }
}
}
ModelStateWrapper 类位于我的 MVC3 应用程序的 Services 文件夹中。虽然 IValidationDictionary 在我的 Services 层内的 Abstract 文件夹中。在我的 Unity 配置中,我执行了以下操作:
.RegisterType<IValidationDictionary, ModelStateWrapper>(
new HttpContextLifetimeManager<IValidationDictionary>())
那么,现在我可以做些什么来使用 IoC 将 ModelState 对象注入到 ModelStateWrapper 类中吗?还是我必须在控制器中显式/手动实例化 ModelStateWrapper 并将 ModelState 作为参数传递?
提前致谢!
【问题讨论】:
-
显然是的!我以前没有看到那个线程。感谢您指出。但这仍然不能解决我的问题...:/
-
这是一个关于 SO 的答案,它在引用的文章中使用给定的方法:stackoverflow.com/questions/4776396/…。
标签: asp.net-mvc dependency-injection asp.net-mvc-3 ioc-container dependency-management