Castle Windsor Intercept Methodenaufruf aus der Klasse
Wir haben Komponentenregistrierungen in Castle Windsor Container wie so
void RegisterComponent<TInterface, TImplementation>() {
var component = Component.For<TInterface>().ImplementedBy<TImplementation>();
component.Interceptors<SomeInterceptor>();
container.Register(component);
}
Wir haben jedoch das Problem, dass ein Methodenaufruf innerhalb der Klasse nicht abgefangen wird. Zum Beispiel haben wir eine Komponente wie
ServiceA : IService {
public void MethodA1() {
// do some stuff
}
public void MethodA2() {
MethodA1();
}
}
Und wenn wir @ anrufMethodA2
oderMethodA1
Methoden einer anderen Klasse werden abgefangen, aberMethodA1
offenbar nicht abgefangen, wenn von @ aufgerufMethodA2
da der Aufruf aus der Klasse stammt.
Wir haben einen ähnlichen Fall mit der Lösung gefundenCastle Dynamic Proxy fängt keine Methodenaufrufe ab, wenn es innerhalb der Klasse @ aufgerufen wi Die Lösung bietet jedoch die Erstellung von Komponenten und Proxys mithilfe vonnew
Operator, der in unserem Fall nicht geeignet ist, da wir Container verwenden. Können wir diese Lösung mit Komponentenregistrierung wie oben verwenden? Oder gibt es andere Ansätze, um das Problem zu lösen?