以下是我的父类
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>()
)
答案 0 :(得分:0)
确保您已完成以下操作:
1)您添加了Interception
扩展名,如下所示:
container.AddNewExtension<Interception>();
2)拦截行为类的WillExecute
属性返回true
。
3)您从容器中获取Child
实例。这可以像这样直接完成:
Child chlid = container.Resolve<Child>();
或者将Child
作为某个类的依赖项,然后使用容器解析包含此类的对象图。