2016-10-03 3 views
0

여기 내 Installer.cs입니다 :ComponentNotFoundException 성 윈저

class Installer : IWindsorInstaller 
{ 
    public void Install(IWindsorContainer container, IConfigurationStore store) 
    { 
     container 
      .Register(Component.For<IDbContext>() 
      .ImplementedBy<ApplicationDbContext>() 
      .LifeStyle.PerThread 
      ); 

     container 
      .Register(Component.For(typeof(IRepository<>)) 
      .ImplementedBy(typeof(Repository<>)) 
      .LifeStyle.PerThread 
      ); 

     container 
      .Register(Component.For<IServiceReadCity>() 
      .ImplementedBy<ServiceReadCity>() 
      .LifeStyle.PerThread 
      ); 
    } 
} 
여기

내 Program.cs :

SqlServerTypes.Utilities.LoadNativeAssemblies(AppDomain.CurrentDomain.BaseDirectory); 
System.Data.Entity.SqlServer.SqlProviderServices.SqlServerTypesAssemblyName = "Microsoft.SqlServer.Types, Version=12.0.0.0, Culture=neutral, PublicKeyToken=898989899898989898"; 

var container = new WindsorContainer(); 

container.Install(FromAssembly.This()); 
IServiceReadCity _cityReadService = container.Resolve<IServiceReadCity>(); 

var cities = _cityReadService.GetListQuery(); 

이것은 콘솔 응용 프로그램. 나는이 예외가 :

{ "는 Reveal.Domain.Location.Service.Read.IServiceReadCity이 발견 된 서비스를 지원하기위한 어떤 구성 요소 없다"}이 줄에 을 :

IServiceReadCity _cityReadService = container.Resolve<IServiceReadCity>(); 

수 당신은 내가 뭘 잘못하고 어떻게 해결할 지 말해 주시겠습니까? 감사.

+1

당신이 당신의 설치 프로그램이 실제로 실행 확인하기 위해 브레이크 포인트나요 문제를 해결해야 만들기? 또한 디버그 중에 컨테이너를 검사하여 등록 된 서비스와 해당 서비스를 지원하는 구현을 확인할 수 있습니다. – Charleh

+0

@Charleh 설치 프로그램에 중단 점을 넣었습니다. 실행되지 않습니다. 어떻게 작동시킬 수 있습니까? 감사. – jason

+1

아마도 설치 프로그램을'public'해야 할 것입니다. 윈저가'IWindsorInstaller' 인터페이스를 구현하는 public 타입을 찾기 위해 어셈블리를 검색한다고 생각합니다. Windsor가 찾지 못해서 Windsor가 실행하지 않는 것 같습니다. – Charleh

답변

1

Windsor의 설치 관리자는 Windsor가 IWindsorInstaller 인터페이스를 구현하는 공용 유형을 찾을 때 공개적으로 액세스 할 수 있어야합니다.

설치 public