存储库“生成器”的依赖注入

时间:2011-03-13 14:07:44

标签: asp.net-mvc dependency-injection ninject

我做了我的研究,但我找不到任何我想做的具体例子。

我成功地将Ninject实施到了我的MVC项目中。一切都很完美。但是,我想做最后一步。

到现在为止,我一直在这样工作(正常的DI模式):

public class myController : Controller
{  
    private iMyInterface myRepository;

    public myController(iMyInterface myRepository)
    {
        this.myRepository = myRepository;
    }        

    public ActionResult list(){
        return view(myRepository.getMyList())
    }        

    // rest o the code ...
}

我的问题是;有办法做这样的事情吗? (存储库“生成器”)

public class myController : Controller
{  
    private iMyInterface myRepository = specialClass.GetMyRepository();

    public ActionResult list(){
        return view(myRepository.getMyList()) }

    // rest o the code ...    
}

我知道我正在写一个无意义的代码,但我的想法是能够做类似的事情。

任何建议?

2 个答案:

答案 0 :(得分:5)

我不知道specialClass应该是什么,但这看起来很像行动中的Service Locator anti-pattern

通过构造函数注入存储库的第一个选项更好,因为它为您提供了更多选项,包括使用{{1 }}:

specialClass

我不了解Ninject,但大多数DI容器都提供了一个选项,可以将接口映射到返回接口实例的方法调用。

答案 1 :(得分:0)

我宁愿在构造函数中使用存储库“Generator”。这会给你相同的结果,但注射正确。