두 개의 다른 어셈블리에서 Castle Windsor Auto 등록?
-
20-09-2019 - |
문제
container.Register(
AllTypes.Pick().FromAssembly(typeof (UserRepository).Assembly)
.WithService.FirstInterface());
현재 인터페이스가 동일한 어셈블리에 있으면 위의 코드가 잘 작동하지만 iuserrepository가 다른 어셈블리에서 나오면 폭발합니다.
두 개의 다른 어셈블리에서 자동 등록이 가능합니까? 내가 여기서 뭔가를 놓치고 있습니까?
해결책
예, 인터페이스가 다른 어셈블리에서 정의되는 경우 자동 등록을 정의 할 수 있습니다. 우리는 약간 다른 구문을 사용하지만 다음과 같습니다.
container.Register(AllTypes
.FromAssemblyContaining<ConfigurationService>()
.Where(t => t.Name.EndsWith("Service", StringComparison.Ordinal))
.WithService
.FirstInterface()
.Configure(reg => reg.LifeStyle.PerWebRequest));
다른 API 사용이 차이를 만들지는 말할 수는 없지만 그렇지 않다고 가정합니다. 오히려, 당신이 경험 한 오류의 원인은 인터페이스를 포함하는 어셈블리를 사용할 수 없다는 것입니다.
Fusion이 해당 응용 프로그램에서 유형을로드 할 수 있는지 확인하십시오.
제휴하지 않습니다 StackOverflow