속성을 통해 적용하려고하는 성 인터셉터가 있습니다. 클래스 레벨에서 Interceptor 속성을 적용하면 효과적이지만 메서드 수준에 적용 할 때는 전혀 작동하지 않습니다. 내가 도대체 뭘 잘못하고있는 겁니까? 클래스의 모든 메소드를 인터셉트하지 않고 [Interceptor] 속성을 사용하여 특정 메소드를 플래그 지정합니다. 내 메서드를 가상으로 표시하려고 시도했지만 여전히 작동하지 않습니다. 여기에 내 코드입니다 :이 작동Castle-Windsor 인터셉터가 메소드 - 레벨 속성과 함께 작동하지 않습니다.
모든 방법이 차단됩니다
[Interceptor(typeof(CacheInterceptor))]
public class Foo : IFoo
{
public int SomeMethod() { }
}
이 작동하지 않습니다 (속성은 메소드 레벨에있다) :
public class Foo : IFoo
{
[Interceptor(typeof(CacheInterceptor))]
public int SomeMethod() { }
}
설치 :
public class CacheInterceptorInstaller : IWindsorInstaller
{
public void Install(IWindsorContainer container, IConfigurationStore store)
{
container.Register(Component.For<CacheInterceptor>().LifeStyle.Singleton);
container.Register(Component
.For<ICacheProvider>()
.LifeStyle.Singleton
.ImplementedBy<CacheProvider>());
}
}
요격기 :
개public class CacheInterceptor : IInterceptor
{
private readonly ICacheProvider _cacheProvider;
public CacheInterceptor(ICacheProvider cacheProvider)
{
_cacheProvider = cacheProvider;
}
public void Intercept(IInvocation invocation)
{
// do interception stuff
}
}
감사합니다,
앤디
이 나를 슬프게한다. 나는 AOP에 꽤 새로 왔지만, 메소드 레벨 인터셉터가 제공 할 수있는 좋은 기능이 될 것 같다. 도와 주셔서 감사합니다! – Andy
PostSharp를 사용하면 시도하고있는 것을 훨씬 쉽게 수행 할 수 있습니다. –