Tag: interceptor

如何在Castle.DynamicProxy中使用IInterceptor?

我写了一个这样的例子 简单计算器类: public class Calculator { public int Add(int a, int b) { return a + b; } } 实现了DynamicProxy提供的“IInterceptor” [Serializable] public abstract class Interceptor : IInterceptor { public void Intercept(IInvocation invocation) { ExecuteBefore(invocation); invocation.Proceed(); ExecuteAfter(invocation); } protected abstract void ExecuteAfter(IInvocation invocation); protected abstract void ExecuteBefore(IInvocation invocation); } 创建了一个Interceptor类,并inheritance自“Interceptor”类 public class CalculatorInterceptor : Interceptor { […]

城堡温莎拦截方法从class级内召唤

我们在Castle Windsor容器中注册了组件,就像这样 void RegisterComponent() { var component = Component.For().ImplementedBy(); component.Interceptors(); container.Register(component); } 然而,我们遇到的问题是,当我们从类中进行方法调用时,它不会被截获。 例如,我们有类似的组件 ServiceA : IService { public void MethodA1() { // do some stuff } public void MethodA2() { MethodA1(); } } 如果我们从其他类中调用MethodA2或MethodA1方法,则会截获它,但是当从MethodA2调用时, MethodA1显然不会被截获,因为调用来自类中。 我们发现类似的情况,解决方案Castle Dynamic Proxy在从类中调用时不拦截方法调用但是该解决方案使用new运算符来创建组件和代理,这在我们的情况下不适合,因为我们使用容器。 我们可以像上面那样使用此解决方案进行组件注册 还是有其他方法来解决这个问题?

真正的拦截器对我的c#类做了什么?

我被要求在我的asp.net web应用程序中实现城堡动态代理,我正在阅读几篇文章,我从Castle Project和Code Project获得了关于asp.net web应用程序中的城堡动态代理…. 这两篇文章都与创建拦截器有关,但我无法理解为什么拦截器与类一起使用….为什么我应该拦截我的类,哪个行为正常?