2010-01-13 4 views
1
container.Register(
     AllTypes.Pick().FromAssembly(typeof (UserRepository).Assembly) 
      .WithService.FirstInterface()); 

현재 인터페이스는 동일한 어셈블리에도 있지만 IUserRepository가 다른 어셈블리에서 제공되는 경우 위의 코드는 잘 작동합니다.두 개의 다른 어셈블리에서 성 윈저 자동 등록?

두 개의 다른 어셈블리에서 자동 등록이 가능합니까? 내가 여기서 뭔가를 놓치고 있니?

+0

기본 클래스가 다른 인터페이스를 상속하는 경우이 사이트를 참조하십시오. http://blog.theagileworkshop.com/2009/06/09/extension-methods-we-use-for-auto -registration-in-castle-windsor/ – firefly

답변

4

예, 인터페이스가 다른 어셈블리에 정의되어있는 경우 자동 등록을 정의 할 수 있습니다. 다른 API 사용에 차이가 있는지

container.Register(AllTypes 
    .FromAssemblyContaining<ConfigurationService>() 
    .Where(t => t.Name.EndsWith("Service", StringComparison.Ordinal)) 
    .WithService 
    .FirstInterface() 
    .Configure(reg => reg.LifeStyle.PerWebRequest)); 

내가 말할 수 없다,하지만 난 그렇지 않은 가정 것이다 : 우리는 약간 다른 구문을 사용하지만 우리는 그것을 할. 오히려, 내가 경험 한 오류의 원인은 아마도 인터페이스가 포함 된 어셈블리를 사용할 수 없다는 것입니다.

퓨전이 해당 애플리케이션에서 유형을로드 할 수 있는지 확인하십시오.

+1

당신 말이 맞습니다. 내 문제는 UserRepository가 다른 인터페이스를 상속받은 기본 클래스에서 상속된다는 것입니다. 그래서 기본 클래스의 인터페이스가 대신 사용되었습니다. 덕분에 귀신 꼬리를 쫓아 낼 필요가 없습니다. 솔루션을 포함하도록 질문을 편집했습니다. – firefly