构造函数注入 - 在哪里调用?

mgi*_*bas 5 .net dependency-injection constructor-injection

我对构造函数注入模式和规则有点困惑不要调用容器; 它会打电话给你.

有人可以解释我(也许还有其他人)真正的应用程序如何使用构造函数注入获得所有DI优势?我给出了一些简单的,我认为常见的例子:

DomainObject
RepositoryObject
DaoObject
Run Code Online (Sandbox Code Playgroud)

关系很明显(我认为) - RepositoryObject需要DaoObject,DomainObject需要Repository.

使用构造函数注入我假设我可以忘记(在大多数情况下)关于NEW关键字,但是何时,何地以及如何创建新对象(主要是域)?我必须为所有班级写工厂吗?我应该在那家工厂参考DI Container吗?

最好的将是当有人向我展示一些真实的应用程序示例(请不要Asp.Net MVC :))或草绘一些项目结构.

Jak*_*cki 1

我不明白你的阶级关系,所以这里有一个更明显的;-)示例:

class FooService
{
    IFooRepository FooRepository { get; set; }

    public Service(IFooRepository fooRepository)
    {
        this.FooRepository = fooRepository;
    }
}

class Controller
{
    IFooService FooService { get; set; }
    IBarService BarService { get; set; }

    public Controller(IFooService fooService, IBarService barService)
    {
        this.FooService = fooService;
        this.BarService = barService;
    }
}
Run Code Online (Sandbox Code Playgroud)

正如您已经说过的 - 任何地方都没有new FooRepository()代码new FooService()