2012-03-22 1 views
1

저는 응용 프로그램의 아키텍처를 약간 변경했으며 IWindsorContainer는 더 이상 ResolveAll을 사용할 수 없습니다. Castle Windsor가 인터페이스가 뒤에있을 때 ResolveAll을 처리 할 수 ​​없습니다. 2 개의 추상 기본 클래스

작업했던 오래 된 건축했다 :

public abstract class ServiceBase : IService {} 
public class TrainFileService : ServiceBase {} 

을 그리고 이것은 ResolveAll이 FileProcessorScheduledService가 해결되지 않는 새로운 아키텍처 : 그래서

public abstract class ServiceBase : IService {} 
public abstract class FileServiceBase : ServiceBase {} 
public class TrainFileService : FileServiceBase {} 

을, 나는 또 다른 추상 클래스를 도입했습니다 ....

이전 및 새로운 방법으로 해결하기 위해 사용 된 코드는 다음과 같습니다.

IService[] _services = Program.IocContainer.ResolveAll<IService>(); 

이전 및 새로운 방식의 TrainFileService를 등록하는 데 사용되는 코드는 다음과 같습니다

<castle> 
<components> 
    <component id="TrainFileService" 
      lifestyle="singleton" 
      service="Blah.Service.Services.IService, Blah.Service" 
      type="Blah.Service.Services.TrainFileService , Blah.Service"> 
    </component> 

감사 의견에 크리스가 언급 한 바와 같이

+0

어떻게'TrainFileService'를 등록합니까? –

+0

마지막 코드는 TrainFileService (IService [] _services = Program.IocContainer.ResolveAll ();)를 등록하는 데 사용됩니다. 이것은 오래된 방법을 사용했지만 새로운 방법은 사용하지 않았습니다. –

+0

어떻게 해결할 것인가? (용기에서 꺼내십시오 *). 등록 방법이 아닙니다 (컨테이너에 * 넣으십시오). –

답변

0

, 내가 가진 방법으로 잘못된 것은 실제로 없었다 아키텍처를 변경했습니다.

문제는 다른 곳에서 발생했습니다. 즉, 나는 생성자에 부울을 등록하지 않았다 ...

관련 문제