2016-10-31 1 views
0

서브 클래스가 UnityBootstrapper 인 클래스의 ConfigureContainer() 메소드에 유형을 등록합니다. 이 질문에 대해서는 인터페이스 유형과 구현 클래스가 부적합합니다. 그들은 존재하며 해결 될 수 있습니다. 관련성이있는 것은 인터페이스와 타입이로드하고자하는 모듈을 포함하고있는 같은 어셈블리에 정의되어 있습니다 (이것을 C이라고합시다).유니티 등록이 프리즘의 모듈 찾기 기능을 왜 망 칩니 까?

다른 두 개의 모듈이 어셈블리에 있습니다. 입니다. 이 모듈은 부트 스트 래퍼의 InitializeModules() 메소드에 사용 된 DirectoryModuleCatalog에 의해 발견됩니다. 조립 의 모듈이 아닙니다.

문제가있는 등록을 제거하면 C이 있습니다. 인터페이스 및 대상 클래스를 다른 어셈블리로 이동하고 등록을 다시 추가하면 C이 다시 나타납니다.

내가 내부 에 부트 스트랩에서 C의 모듈 생성자 등록을 이동 주입 IUnityContainer하여 거기를 등록 할 때, 모듈이 발견하고 등록 성공.

그래서 등록 순서와 위치가 모듈 로딩에 영향을 미치고 예외없이 자동으로 나타납니다. 지금은 "모듈의 생성자에있는 모듈 어셈블리의 레지스터 유형"접근 방식을 사용하고 있습니다.하지만이 방법은 해결 방법과 같습니다.

"할 수있는 방법"입니까? 알려진 제한 사항입니까, 아니면 버그입니까?

답변

1

이 문제가 발생하는 이유는 확실하지 않지만 "Initialize 모듈의 모듈에있는 레지스터 유형"이 좋습니다. 이것이 모듈의 역할입니다. 응용 프로그램에 가져 오는 유형을 등록합니다.

일반적으로 모듈을 참조하지 않으므로 모든 모듈 집합이 런타임에 응용 프로그램에 포함될 수 있으므로 모듈 외부에 모듈 유형을 등록 할 수 없습니다. 예를 들어, 한 모듈에서 사용하지만 다른 모듈에서 구현하려는 인터페이스가있는 경우 세 번째 어셈블리에서 해당 인터페이스를 이동합니다 (모듈 정의가 없을 가능성이 큽니다).

+0

되돌아 보면 의미가 있습니다. 모듈을 삭제해야하는 경우 등록을 "뒤로"하고 싶지 않을 것입니다. 모듈을 찾지 못하는 대신에 예외 나 예외를 던지기를 바란다. – Kit

관련 문제