2

我正在构建一个多层应用程序并试图尽可能地保持图层,所以我正在使用一个IoC容器来达到此目的。无论如何,我正试图扩展this article将我的业务逻辑验证转移到服务层。我设法解决除了ModelState本身上的ModelStateWrapper类的依赖性之外的所有依赖性问题。这里是我的课程:管理构造函数依赖注入(MS Unity)

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位于我的服务层内的抽象文件夹中。在我的统一配置,我做了以下内容:

.RegisterType<IValidationDictionary, ModelStateWrapper>(
    new HttpContextLifetimeManager<IValidationDictionary>()) 

所以,现在有什么我可以做些什么来注入的ModelState对象为使用国际奥委会ModelStateWrapper类?或者我必须显式/手动实例化控制器中的ModelStateWrapper并将ModelState作为参数传入?

在此先感谢!

+0

的可能重复调用该引导程序[有没有解决的ASP的依赖注入循环问题的一个好/有道。 NET MVC ContactsManager教程?](http://stackoverflow.com/questions/1453128/is-there-a-good-proper-way-of-solving-the-dependency-injection-loop-problem-in-th) – 2011-02-27 16:58:21

+0

显然是的!我之前没有看到那个线程。感谢您指出。但仍然不能解决我的问题...:/ – Kassem 2011-02-27 20:02:26

+0

下面是对所引用文章中的给定方法的评论SO的答案:http://stackoverflow.com/questions/4776396/how-to-inject-a -model状态,包装与 - ninject/4851953#4851953。 – Steven 2011-03-01 07:37:20

回答

0

我认为你需要将你的modelstatewrapper类移动到一个通用程序集。您可以从您的服务层,业务逻辑层等引用此常见程序集。常用程序集可以包含您的域类,dto's,服务定义等等。您创建一个引导程序类,它将公共程序集中的所有类型注册到容器中。从服务,BL层等

我希望这有助于

问候

相关问题