InterceptorGroup<S>
using Castle.Core;
using Castle.Core.Interceptor;
namespace Castle.MicroKernel.Registration.Interceptor
{
public class InterceptorGroup<S> : RegistrationGroup<S>
{
private readonly InterceptorReference[] interceptors;
public ComponentRegistration<S> Anywhere {
get {
AddDescriptor(new InterceptorDescriptor<S>(interceptors));
return base.Registration;
}
}
public ComponentRegistration<S> First {
get {
AddDescriptor(new InterceptorDescriptor<S>(interceptors, InterceptorDescriptor<S>.Where.First));
return base.Registration;
}
}
public ComponentRegistration<S> Last {
get {
AddDescriptor(new InterceptorDescriptor<S>(interceptors, InterceptorDescriptor<S>.Where.Last));
return base.Registration;
}
}
public InterceptorGroup(ComponentRegistration<S> registration, InterceptorReference[] interceptors)
: base(registration)
{
this.interceptors = interceptors;
}
public ComponentRegistration<S> AtIndex(int index)
{
AddDescriptor(new InterceptorDescriptor<S>(interceptors, index));
return base.Registration;
}
public InterceptorGroup<S> SelectedWith(IInterceptorSelector selector)
{
base.Registration.SelectInterceptorsWith(selector);
return this;
}
}
}