2009-08-09 3 views
2

IoC 용 Windsor를 사용하는 애플리케이션이 정상적으로 작동합니다. 나는 메소드 호출, 매개 변수 및 윈저 인스턴스화 구성 요소에 대한 모든 호출의 실행 시간을 기록 할, 그래서 포함 IInterceptor를 구현하는 LoggingInterceptor 구현 : 이전에 잘 작동 작업을 던지고있다 이제윈저에 문제가 발생하여 인터셉터를 추가 한 후 "Genericized"메소드가 호출됩니다.

Stopwatch sw = new System.Diagnostics.Stopwatch(); 
sw.Start(); 
invocation.Proceed(); // EXCEPTION IS THROWN HERE 
sw.Stop(); 
Logger.Debug(..... 

을 다음 메시지가있는 VerificationExceptions :

메서드 리포지토리.RepositoryBase.GetAll : 형식 인수 'ET'는 형식 매개 변수 'ET'의 제약 조건을 위반합니다.

방법의 특성은 다음과

다음

을 (EntityBase2 및 IEntity2가 LLBLGenPro 어디에서)

public IList<ET> GetAll<ET>() where ET : EntityBase2, IEntity2 

있어서의 발신자가 될 때 :

public IList<ServerEntity> GetServers() 
{ 
    return GetRepository<IServerRepository>().GetAll<ServerEntity>(); 
} 

(GetRepository <>()는 ServiceLocator를 둘러싼 랩퍼 일뿐입니다.

성 구성에서 인터셉터를 주석 처리하면 모든 것이 잘 작동합니다.

현재 로깅 인터셉터를 사용할 수있는 이유는 무엇입니까?

감사

+0

이 문제를 재현 한 전체 테스트 케이스를 게시하십시오. –

+0

저는 Windsor Castle 2.5를 실행 중이며 정확히 동일한 문제가 있습니다. –

답변

1

는 윈저의 이전 버전을 사용하는 경우 (RC3 또는 이전) 년 이전 DynamicProxy를 지원하지 않기 때문에이 일반적인 유형에 인터셉터를 지원합니다 생각하지 않습니다.

Windsor의 최신 버전으로 업데이트 할 수 있습니다. DynamicProxy2는 제네릭 유형에서 작동하는 후드 아래에서 사용됩니다.

1

Visual Studio 디버거에서만 발생합니까?

캐슬의 최신 트렁크 버전에서도 이와 같은 현상이 발생합니까? (here을 찾을 수 있습니다)

관련 문제