我正在构建一个多层应用程序,并尝试尽可能多地保留层,因此我正在使用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作为参数传递?
提前致谢!
答案 0 :(得分:0)
我认为您需要将modelstatewrapper类移动到公共程序集。您可以从服务层,业务逻辑层等引用此通用程序集。通用程序集可以包含您的域类,dto,服务定义等。您可以创建一个引导程序类,它将所有类型从公共程序集注册到容器中。从服务,BL层等调用此引导程序
我希望这会有所帮助
问候