If I registered several components with Windsor.
IAnimal provides BigAnimal IPerson provides SmellyPerson IWhale provides BlueWhale
etc.. pretty standard com
Simply create an interface like this:
public interface IMustBeIntercepted {}
and a facility like this:
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)));
}
}
}
Then register the facility to the container using the tag. Now all components that implements IMustBeIntercepted will be intercepted by the interceptor TestInterceptor.