나는 일하고있는 애완 동물 프로젝트에 윈저 성을 사용하고 있습니다. 새로운 객체를 만들기 위해 다른 곳에서 IoC 컨테이너를 호출해야한다는 것을 알기 시작했습니다. 이 컨테이너에 대한 의존성으로 인해 코드를 유지하기가 더 어려워집니다.IoC, 컨테이너를 어디에 두겠습니까?
내가 내가 객체를 생성 할 필요가 내 응용 프로그램의 부분으로 주입 할 수있는 용기 래퍼 추상적 공장을 만들려고이 문제
를 해결하기 위해 사용했습니다 두 가지 해결책이 있습니다. 성은 의존성으로 자신의 컨테이너를 주입하기가 어렵 기 때문에 이것은 작동하지만 결점이 있습니다. 그래서 저는 이것을 손으로해야만합니다, 이런 종류의 IoC 컨테이너의 모든 목적을 이겨내십시오.
저는 주 applicationcontroller 클래스를 사용하여 IoC 컨테이너를 랩하고 중앙 공장/저장소로 작동했습니다. 이것은 꽤 성공적 이었지만이 수업은 너무 커져서 중앙 신 개체처럼 작동합니다. 거의 모든 다른 객체에는이 객체에 대한 참조가 있습니다.
두 가지 솔루션은 일종의 작업이지만 둘 다 단점이 있습니다. 그래서 다른 사람들이 같은 문제를 가지고 더 나은 해결책을 찾았다면 궁금합니다.
편집 문제는 여기에 객체 B.에 따라 나는 보통 단지 생성자 주입을 사용하고 모든 작품 객체 A에 대해이 아니다. 때로는 유형 A의 오브젝트가 있는데,이 오브젝트는 수명 동안 B 유형의 다른 오브젝트를 가변적으로 작성해야합니다. 어떻게해야할지 모르겠습니다.
@Blair Conrad : 유지 관리 문제는 지금까지 심각하지 않습니다. 일부 클래스는 컨테이너 객체 호출 container.Resolve <>에 의존합니다. 그리고 저는 인프라라고 생각하는 것에 따라 제 코드를 갖고 싶지 않습니다. 여전히 프로젝트를 시도하고 있는데,이 프로젝트에서 ninject에서 성으로 전환 할 때 많은 코드를 변경해야한다는 것을 알게되었습니다.
@flowers : Hmm. 나는 당신의 주먹 해결책을 좋아한다. 그것은 내가 시도한 두 가지 솔루션에서 작동하는 것들을 결합합니다. 나는 여전히 객체에 너무 많은 것을 생각하고 있으며 인터페이스/책임이 충분하지 않다고 생각한다. 목적으로 만들어진 공장을 시험해 보았습니다.하지만 나는 그 물건을 만들기 위해 뒤에서 컨테이너를 사용하고 싶습니다. 그리고 나는 어떻게 컨테이너를 깨끗한 방법으로 물건을 넣을 수 있는지 알지 못했습니다.
저는 궁금해서 답변이 도움이 될 수 있습니다. 어떤 종류의 유지 보수 문제가 있습니까? –