Просто создайте интерфейс как это:
public interface IMustBeIntercepted {}
и средство как это:
public class InterceptionFacility : AbstractFacility {
protected override void Init() {
Kernel.ComponentRegistered += new Castle.MicroKernel.ComponentDataDelegate(Kernel_ComponentRegistered);
}
void Kernel_ComponentRegistered(string key, Castle.MicroKernel.IHandler handler) {
if(typeof(IMustBeIntercepted).IsAssignableFrom(handler.ComponentModel.Implementation)) {
handler.ComponentModel.Interceptors.Add(new InterceptorReference(typeof(TestInterceptor)));
}
}
}
Затем зарегистрируйте средство к контейнеру с помощью <facility>
тег. Теперь все компоненты, который реализует IMustBeIntercepted
будет прерван перехватчиком TestInterceptor
.
Только что написал этого ребенка:
public static BasedOnDescriptor WithInterceptor(this BasedOnDescriptor reg, string interceptorComponentName) {
return reg.Configure(x=> x.Configuration(
Child.ForName("interceptors").Eq(
Child.ForName("interceptor").Eq(
"${" + interceptorComponentName + "}"
))));
}