2008-10-13 6 views
2

IRepository를 기반으로하는 데이터 액세스를위한 데코레이터 체인을 구현하려고합니다. 데이터를 저장하는 저장소 (현재 메모리 인 목록에 있음) {}이 있고 이 유효성 검사 {2}를 수행하는 저장소가 있습니다. 그 중, 기본 인터페이스 인 의 또 다른 방법을 정의한 저장소 인 IUsersRepository {3}을 전문화했습니다. 나는 최신 트렁크 개정에 실행하고 5376.Castle Windsor의 유창한 인터페이스를 사용하여 장식 서비스 체인에 구성 요소를 등록하는 경우, 전문 서비스 유형이있는 경우?

나는 유창 인터페이스를 사용하여 내 구성 요소를 등록 할 수 있도록하고 싶습니다

- 그것은 XML을 통해 한, 서비스의 키를 사용하여 지정할 수 있습니다 innerRepo로서? 그렇다면 어떻게? XML 구성 예는 Bitter Coder Decorator tutorial 을 참조하십시오. 나는 다른 것을 제외하고 등록 순서 에 의존 할 필요가없는 것을 선호합니다.

나는 다음과 같습니다. this blog post.

IRECKository {4}에 대해 컨테이너를 요청하면 데코레이터 체인을 작동시킬 수있었습니다. 내 내 데이터 액세스 전에 ValidatingRepository 메서드가 호출되는 것을 보았습니다. 하지만 컨테이너를 묻는 경우 작동하지 않을 수 있습니다. IUserRepository (얻을 InvalidCastException -이 것 같아요 예상되는 있지만 work-aroundable?).

내 서비스에서 하나의 데코레이션 저장소와 특수화 된 저장소를 사용할 필요가 없도록하고 싶습니다. 이것은 오류가 발생하기 쉽습니다. 현재로서는 내 전문 방법이 다른 기준에 따라 엔티티을 가져 오는 것과 관련되어 있습니다. - 내 메소드를 분리 기준으로 설정하면 해당 인터페이스에 만 허용됩니다. 특수한 인터페이스가 필요합니다. 나는 NHibernate를 확실히 사용하기 위해서 을 결정하지 않았기 때문에 나는 허락되지 않는다. 아마도 IRepo를 만들었을 것입니다. 대리인이나 IQueryable을 가져 가야할까요? 어떤 아이디어? 나는 터널을 가지고 있다면이 모든 아침에 내 머리 을 두 드렸고 놀랄 일이 아니었다. 시력과 다른 접근법이있다. 모든 제안은 입니다.

{1} - {4}은 (는) utilitybase의 복사/붙여 넣기 기능에서 볼 수 있습니다.

답변

3

크로스 게시 here (솔루션 포함).

관련 문제