BaseForm
이 ILogger
또는 IResourceManager
또는 그와 유사한 것으로 가정합니다. 현재 그것은 안티 패턴 인 서비스 로케이터를 사용하여 필요한 서비스의 올바른 구현을 해결합니다.IOC 컨테이너, 서비스 위치 지정자 및 공장을 사용하는 것에 혼동이 있음
- 생성자 삽입을 사용하여 이러한 종류의 종속성을 해결하는 올바른 방법이 있습니까?
- 의존성이있는 인스턴스를 만들기 위해
BaseForm
(및 파생 된 유형)을 컨테이너에 등록해야합니까? 그게 모든 것을 복잡하게하지 않습니까? - 서비스 탐지기를 감싸는 정적 팩토리를 사용하는 것이 좋지 않습니까?
- 단위 테스트는 제쳐두고, 서비스 로케이터 방지 패턴을 사용하기 때문에 정말로 처벌 될 것입니까?
죄송합니다. 한 번에 많은 질문을드립니다. 나는 다음과 같은 SO 질문 및 많은 다른 사람을 읽었습니다 있지만 단지 내 혼란에 추가 읽을 거리 :
- How to use Dependency Injection and not Service Locator
- What's the difference between the Dependency Injection and Service Locator patterns?
- How to avoid Service Locator Anti-Pattern?
무엇을 "유지하기 위해 만드는 원인이 종속? 컨테이너 내부에 종속 클래스 (구성 요소 또는 서비스가 아닌)를 모두 등록한 것처럼 느껴지지 않습니다. – reticent
그 밖의 모든 작업은 DI를 사용하여 컨테이너에서 해결할 수 있는지 확인하십시오. 대부분의 컨테이너는 일괄 등록을 수행 할 수 있습니다. 즉, (관련) 구성 요소 전체 세트를 하나 또는 몇 개의 명령문에 등록 할 수 있습니다. 이렇게하면 컴포지션 루트를 작고 유지할 수 있습니다. – Steven