如何通过解析派生类来拦截父类方法?

时间:2015-11-02 11:19:59

标签: asp.net unity-container interception

以下是我的父类

public class Parent
{
  //This method is intercept-able using **VirtualMethodInterceptor**
  public virtual void Test()
  {
    //Do something
  }
 }

以下是我的孩子课

public class Child:Parent
{
 // This method directly not intercept-able but it calls base.Test() where   Test    is an intercept-able method
 public void Demo(){
   base.Test();
 }
}

现在我想使用Unity解析Child类的实例,其中Demo方法将是可拦截的。实际上Demo方法无法被拦截,因为它不是虚拟的,但此方法在内部调用base.Test() Test可拦截的方法。那么如何解决Child类的可拦截实例?

它不起作用如果我将子类注册到如下所示的统一容器中

    container.RegisterType<Child>(
            new Interceptor<VirtualMethodInterceptor>(),
            new InterceptionBehavior<Interceptor>()
            )

1 个答案:

答案 0 :(得分:0)

确保您已完成以下操作:

1)您添加了Interception扩展名,如下所示:

container.AddNewExtension<Interception>();

2)拦截行为类的WillExecute属性返回true

3)您从容器中获取Child实例。这可以像这样直接完成:

Child chlid = container.Resolve<Child>();

或者将Child作为某个类的依赖项,然后使用容器解析包含此类的对象图。