4

내 등록이 유효하다는 것을 주장하고 싶습니다. 즉, 종속성이없고 순환 의존성이 없다는 것을 주장하고 싶습니다.
구성에 유효하지 않은 경우 실패 할 수 있으므로 응용 프로그램에서 (단위 테스트가 아닌) 그렇게하고 싶습니다.
또한 종속성 그래프를 검색하는 것만으로 모든 구성 요소를 확인하고 (인스턴스화하지 않고)이를 수행하고자합니다.
어떻게 할 수 있습니까?윈저 성의 구성을 확인하는 방법

동기는 복잡한 응용 프로그램 구성의 시행 착오입니다. 나쁘게 구성된 컨테이너의 경우 실패 빠른 동작을 얻는 것을 선호합니다.

BTW - 영감은 AutoMapper의 AssertConfigurationIsValid() 메소드에서 가져 왔습니다.

+0

, 내 친구 구글에게 물어 : 난 당신이 유용하게 사용할 수있는 그것에 대해 두 개의 게시물이 있습니다. 나는 그것을 "윈저 성"으로 만들었고, 나는 영국 여왕의 거주지를 얻었다. 그게 네 얘기에 관한 것이 아니기 때문에 나에게 계몽해라. – Jay

+0

Jay, 아마도 당신이이 태그와 같은 태그를 사용하여 다른 질문을 확인했다면 ... –

+0

Jay - Windsor는 Castle 프로젝트의 컨트롤 컨테이너를 뒤집은 것입니다. http://www.castleproject.org/에서 확인하십시오. –

답변

5

Windsor는 역동적 인 생물체이므로 100 % 확신 할 수 없으며 모든 것이 정적으로 분석 될 수는 없습니다. 모든 처리기는 WaitingDependency 상태 일 수 있지만 해결 시간에 종속성은 DynamicParameters, ISubDependencyResolver 또는 ILazyComponentLoader으로 제공되므로 앱이 100 % 작동 할 수 있습니다.

앞서 언급 한 기능을 Windsor에 포함시킬 계획이 있었지만 위의 제약 사항을 감안할 때 거의 가치가 없습니다.

컨테이너에 들어갈 내용과 그렇지 않은 내용을 결정하는 견고하고 검증 가능한 규칙을 제안하고 구성 요소를 해결하여 컨테이너를 테스트하는 좋은 단위 테스트를 제안합니다.

당신이 위음성을 받고 괜찮다면 다음을 수행 할 수 있습니다 그들을 반복하고 그들은 모두 Valid을 경우 확인,하지만 난 오히려 그위한 전용 시험이있을 것이다 다음

var allHandlers = container.Kernel.GetAssignableHandlers(typeof(object)); 

및 . Take a look at this post for example.

응용 프로그램을 구성 할 때 시행 착오 일 필요는 없으며 그렇게 할 필요도 없습니다. 좋은 협약의 문제이고, 그것들을 고집합니다. 내가 모르는 용어가 올 때

+1

물론 동기는 복잡한 응용 프로그램 구성의 시행 착오입니다. 나쁘게 구성된 컨테이너의 경우 실패 빠른 동작을 얻는 것을 선호합니다. 유효하거나 유효하지 않거나 결정적이지 않은 결과를 반환하는 3 단계 검증 방법을 제공 할 수 있습니까? Windsor의 역동적 인 기능을 거의 사용하지 않으며, 대부분의 경우 잘못된 구성을 일찍 발견 할 수 있다고 생각합니다. –

+0

"응용 프로그램 구성은 시행 착오 일 필요는 없으며 반드시 시행되어야합니다." 그렇지 않은 경우에도 Windsor가 객체를 생성하는 데 문제가있을 때 실제로 오류를 던지는 대신 null을 돌려주는 것만으로는 무슨 일이 일어나는지 파악하기가 어렵습니다.예를 들어 데이터베이스 연결을 설정할 수없는 경우와 같은 상황이 발생합니다. 내 응용 프로그램은 연결이 불가능하다는 유용한 메시지 대신에'NullReferenceException'을 사용하여 훨씬 나중에 폭발합니다. – jpmc26