c# - 面向对象的编程工厂方法构造函数

时间:2017-11-03 14:52:22

标签: c# oop dependency-injection

在C#和构造函数依赖注入中,前两个构造函数之间有什么区别。具体来说,第一个构造函数中的:this表示什么。它只是第二个构造函数或其他东西的简写吗?

    private readonly IRepositoryOne _repositoryOne;
    private readonly IRepositoryTwo _repositoryTwo;
    private readonly IService _service;
    private readonly ApplicationDbContext _context;

    public MyContructor()
        : this(new RepositoryOne(new ApplicationDbContext()), 
               new RepositoryTwo(new ApplicationDbContext())
               new Service())
    {

    }

    public MyContructor()
    {
        _context = new ApplicationDbContext();
        _repositoryOne = new RepositoryOne(_context);
        _repositoryTwo = new RepositoryTwo(_context);
        _service = new Service();
    }


    public MyContructor(IRepositoryOne repositoryOne,
                        IRepositoryTwo repositoryTwo,
                        IService service)
    {
        _repositoryOne = repositoryOne;
        _repositoryTwo = repositoryTwo;
        _service = service;
    }

1 个答案:

答案 0 :(得分:1)

您不应该创建前2个构造函数,因为依赖项注入容器将处理如何创建存储库和服务。

this关键字用于

等场景
Public Person(string name){}

public Person(string name, string lastname) :this(name)
{ 
    // calls first constructor and then..
    // do something with lastname
}