2017-09-04 6 views
1

나는 내 성 컨테이너로 성 윈저를 사용하고 있습니다.캐슬 윈저 : 협약에 등록 된 부품과 함께

container.Register(Component.For<MyService>().Named("MyService")); 

문제는 내 시스템에서 서비스를 많이 가지고 있고 그들 각각 레지스터의 피곤 때문이다 : 나는 이름을 지정 나의 서비스를 등록했다. 어떻게하면 Named 부분을 잃지 않고 규칙에 따라이 작업을 수행 할 수 있습니까? 들어

WindsorContainer container = new WindsorContainer(); 
container.Register(Classes.FromThisAssembly() 
          .BasedOn<IService>() 
          .Configure(c => c.Named(c.Implementation.Name))); 

: 당신은 몇 가지 기본/인터페이스에서 파생 모든 서비스를 등록하려면 다음 사용 후 자신의 이름을 구성 할 수 있습니다

답변

4

(I 클래스와 같은 이름을 가진 내 서비스를 호출 상관하지 않습니다) 다음 예 :

public interface IService { } 
public class Service1 : IService { } 
public class Service2 : IService { } 
public class Service3 : IService { } 
public class Service4 : IService { } 
public class Service5 : IService { } 
public class Service6 : IService { } 

출력했다 :

enter image description here


등록 할 클래스를 선택할 수있는 추가 방법이 있습니다. 더 많은 것을 보십시요 in documentation

+1

@eitanby - 이것은 당신이 문제를 해결하는 데 도움이 되었습니까? –

+0

오, 그래! 고마워, 정확히 내가 필요한거야. – eitanby

+0

@eitanby - 듣기 좋네요 :) 도와 줘서 고마워요 –