Ниже представлен мой родительский класс
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();
}
}
Теперь я хочу разрешить экземпляр класса Child
с помощью Unity, где метод Demo
будет перехватываемым. На самом деле метод Demo
не может быть перехвачен, потому что он не виртуальный, но этот метод внутренне вызывает base.Test()
, где Test
может быть перехвачен. Так как же разрешить перехватываемый экземпляр класса Child
?
Это не работает, если я зарегистрирую дочерний класс в контейнере единства, как показано ниже
container.RegisterType<Child>(
new Interceptor<VirtualMethodInterceptor>(),
new InterceptionBehavior<Interceptor>()
)