다중 레벨 클래스 계층 구조에서 Dependency Injection을 사용하는 방법은 무엇입니까? 예를 들어 : - ModulePageClassServiceRepository에 대한다중 레벨 클래스 계층 구조에서 Dependency Injection을 사용하는 방법은 무엇입니까?
public class ModuleClassViewModel
{
ModulePageClassServiceRepository _modulePageClassServiceRepository = null;
public ModuleClassViewModel(ModulePageClassServiceRepository modulePageClassServiceRepository)
{
_modulePageClassServiceRepository = modulePageClassServiceRepository;
}
public IList<ModulePageClassObject> ModuleClassPageHierarchy(int? modulePageClassID, string SecureKey)
{
return _modulePageClassServiceRepository.ModuleClassPageHierarchy(....);
}
}
와 코드가 .......입니다
우리가 다음 우리가 처음 ModulePageClassServiceRepository 개체를 삽입 할 필요가 ModuleClassViewModel를 사용하려면 DI에 따라 지금public class ModulePageClassServiceRepository : IModulePageClassService
{
ServiceDAO _serviceDAO = null
public ModulePageClassServiceRepository(ServiceDAO serviceDAO)
{
serviceDAO = serviceDAO ;
}
public IList<ModulePageClassObject> ModuleClassPageHierarchy(ModuleClassPageHierarchyParameter moduleClassPageHierarchyParameter)
{
// call serviceDAO and return result
}
}
및 ModulePageClassServiceRepository 위해 우리는 .... 는 테스트 클래스에서 가정 .... serviceDAO이 ....이 계층 구조가 여러 수준으로 성장할 수있는 필요
public class TestDI
{
public void TestMethod()
{
ServiceDAO objServiceDAO = new ServiceDAO();
ModulePageClassServiceRepository objModulePageClassServiceRepository = new ModulePageClassServiceRepository (objServiceDAO);
ModuleClassViewModel objModuleClassViewModel = new ModuleClassViewModel(objModulePageClassServiceRepository);
//call method of objModuleClassViewModel
}
}
종속성 삽입을 사용하는 올바른 방법입니다. 여기에 처음으로 완전한 계층 구조를 초기화해야하므로 내 질문은 - 먼저이 전체 계층 구조를 초기화해야합니까 .... 아니면 ModuleClassViewModel 클래스를 호출하는 다른 방법이 있습니까 ???
당신은 제대로 구성 할 때 수동으로 의존성 주입을 위해, 그것은 필요성을 제거 등 유니티, Autofac, 같은 DI 컨테이너를 사용해야합니다. 또한 클래스에 대한 인터페이스를 작성하면 DI 프로세스가 쉬워지고 코드를보다 유연하게 만들 수 있습니다. –