Saya mencoba meningkatkan pengetahuan Inversi Kontrol saya, dan melihat beberapa kode yang ingin saya ketahui - apakah ini benar IoC?
public class DepartmentLogic : IDepartmentLogic
{
private readonly IDepartmentRepository _departmentRepository;
public DepartmentLogic(IDepartmentRepository repo)
{
_departmentRepository = repo;
}
public DepartmentLogic()
{
_departmentRepository = new DepartmentRepository(Constants.CONNECTION_STRING_NAME);
}
}
Jika pengujian unit memanggil kelas ini, ia akan meneruskan IDepartmentRepository tiruan. Namun, semua kode aplikasi utama menggunakan kelas dengan konstruktor default, yang kemudian memunculkan DepartmentRepository yang konkret.
Apakah ini benar? Saya pikir saya membaca bahwa Anda tidak boleh membuat kelas dependen baru dalam kelas panggilan Anda, seperti yang terjadi di konstruktor default, dan bahwa pembaruan DepartmentRepository yang konkret harus benar-benar terjadi di kelas yang membuat kelas ini.