나는 IInventoryRepository를 inevected로 가져온 InventoryController를 가지고 있지만, 나의 필요성이 바뀌었고 이제는 컨트롤러 메소드 중 또 하나의 저장소 인 ILoansRepository (빌려준 인벤토리 아이템에 대한 정보 얻기)와 또 다른 하나를 사용해야한다. 일부 통계 및 추가 정보가 있습니다.모범 사례 : 여러 종속성 저장소를 ActionController에 가져 오는 방법은 무엇입니까?
실제로 작동하는 방식은 InventoryController의 ActionMethod에서 호출되는 ViewModelBuilder 클래스입니다. 즉 실제로 필요한 부품 인 ViewModelBuilder 클래스입니다. 현재 IInventoryRepository를 컨트롤러에서 빌더로 전달했지만 현재 어떻게해야합니까? 컨트롤러에 3 개의 레포지토리를 주입시켜야하고, 지금 내가했던 것처럼 빌더에 전달해야합니까? 아니면 그냥 IoC.GetInstance()를 수행해야합니까? (비록 그것이 안티 패턴이라고 생각하지 않습니까?)
감사합니다!
컨트롤러 자체가 CRUD를하기 위해 InventoryRepository를 필요로하지만, 실제로는 좋지만, 아마도 IRepo + IViewModelBuilder를 넘겨 줄 것입니다. 그것에 대해 어떻게 생각합니까? –
당신은 IViewModelBuilder을 만들기에 대해 어떻게 생각하십니까 다음 컨트롤러를받을 (IInventoryRepository 저장소, IViewModelBuilder viewModelBuilder) 내의 IoC 설정에서 이런 일이 : ForRequestedType >() .TheDefaultIsConcreteType는 () 및 카탈로그 뷰 모델 빌더 자체가 InventoryRepo과 LoansRepo의 인스턴스를 필요하지만 IOC는 너무 확인한다는 것을 처리? 그것은 다소 복잡하다고 느낀다. –
제게 좋은 리팩토링 같아 보입니다. 더 복잡하지 않고, 단지 다른 것, 명확한 책임 분립. 여기에서 여전히 불만을 터트리는 유일한 이유는 IInventoryRepository와 IViewModelBinder를 섞으면 동일한 생성자에 '저수준'서비스 (저장소)와 '상위 서비스'가 혼합되어 있다는 것입니다. 그것은 비대칭을 암시하지만, 나 역시 항상 그렇게됩니다. 그러나, 그렇게 할 때, 나는 항상 '비수준'서비스가 또 다른 '고차원'서비스로 대체 될 수 있음을 알기 때문에 이런 종류의 비대칭에 주목한다. –