Asp.net 如何通过解析派生类来拦截父类方法?
下面是我的家长课Asp.net 如何通过解析派生类来拦截父类方法?,asp.net,unity-container,interception,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.
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();
}
}
下面是我的孩子班
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
类的可拦截实例呢
如果我将子类注册到unity容器中(如下图所示),则它不起作用
container.RegisterType<Child>(
new Interceptor<VirtualMethodInterceptor>(),
new InterceptionBehavior<Interceptor>()
)
container.RegisterType(
新的拦截器(),
新的拦截行为()
)
确保您已完成以下操作:
1) 您添加了拦截
扩展,如下所示:
container.AddNewExtension<Interception>();
Child chlid = container.Resolve<Child>();
或者将
Child
作为某个类的依赖项,然后使用容器解析包含该类的对象图。虽然我的代码中已经包含了上述内容,但无论如何,感谢您的建议。。首先,我想解决的子实例,这是罚款如上所述。现在,如果我使用子实例调用Demo()方法,那么Test()方法应该被拦截,因为Demo()在内部调用Test(),Test()是一个虚拟方法,所以它应该被VirtualMethodInterceptor Behavior拦截。我测试了您的场景,它在我的机器上工作。你能分享一个更完整的代码吗?