Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
c#-面向对象编程工厂方法构造函数_C#_Oop_Dependency Injection - Fatal编程技术网

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

c#-面向对象编程工厂方法构造函数,c#,oop,dependency-injection,C#,Oop,Dependency Injection,在C#和构造函数依赖注入中,前两个构造函数之间的区别是什么。具体来说,:第一个构造函数中的此表示什么。它只是第二个构造函数的简写还是其他什么 private readonly IRepositoryOne _repositoryOne; private readonly IRepositoryTwo _repositoryTwo; private readonly IService _service; private readonly ApplicationDbC

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

    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;
    }

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

this
关键字用于以下场景:

Public Person(string name){}

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

@L.古特哈特第一个调用第三个。@adam78这似乎是一个。你想要达到的最终目标是什么?”因为我会删除前两个构造函数,并让DI容器将显式依赖项注入到构造函数3中,这样就可以拥有多个构造函数。