2012-01-05 3 views
1

관련 컴포넌트에 대한 인스턴스가 해결되자 마자 바로 IInterceptor에서 메소드를 가져 오는 방법이 있습니까? IOnBehalfAware와 비슷하지만 ComponentModel이 아닌 실제 컴포넌트 인스턴스로 호출되도록합니다.컴포넌트 인스턴스에서 Castle Interceptor 호출하기

+0

을 왜하고 싶어? –

+0

인터셉트 된 구성 요소의 멤버 (속성)에 대한 특성이 있습니다. 인터셉터가 내 구성 요소를 반영하고 해결되는 즉시 일부 논리를 적용한 다음 결과를 저장합니다. 같은 IInterceptor 인스턴스가 나중에 메서드 호출을 가로 채기 때문에 해당 데이터가 필요하기 때문에 일반 OnCreate 대리자를 사용할 수 없습니다. – Jeff

답변

0

... 인터페이스를 정의 같은 일을 최대 종단 나의 IInterceptor (들)을 구현 : 구성 요소를 등록 할 때, 그리고

public interface IInstanceAware 
{ 
    void Execute(object instance); 
} 

을 정확히 할 것을

registration.OnCreate((kernel, instance) => 
{ 
    var accessor = instance as IProxyTargetAccessor; 
    foreach(var instanceAware in accessor.GetInterceptors().OfType<IInstanceAware>()) 
    { 
     accessor.Execute(instance); 
    } 
};