Вызов метода перехвата замка Виндзор из класса
У нас есть регистрация компонентов в контейнере Castle Windsor, вот так
void RegisterComponent<TInterface, TImplementation>() {
var component = Component.For<TInterface>().ImplementedBy<TImplementation>();
component.Interceptors<SomeInterceptor>();
container.Register(component);
}
Однако мы столкнулись с проблемой, что когда мы выполняем вызов метода из класса, он не перехватывается. Например, у нас есть такой компонент, как
ServiceA : IService {
public void MethodA1() {
// do some stuff
}
public void MethodA2() {
MethodA1();
}
}
И если мы позвонимMethodA2
или жеMethodA1
методы из какого-то другого класса перехватывается, ноMethodA1
по-видимому, не перехватывается при вызове изMethodA2
так как вызов изнутри класса.
Мы нашли похожий случай с решениемCastle Dynamic Proxy не перехватывает вызовы методов при вызове из класса Однако решение включает создание компонентов и прокси с использованиемnew
оператор, который не подходит в нашем случае, так как мы используем контейнер. Можем ли мы использовать это решение с регистрацией компонентов, как описано выше? Или есть другие подходы для решения проблемы?