Это определенно похоже на ошибку в Виндзоре.Похоже, это связано с принятием InterceptorGroup для компонентов без цели.То есть:
container.Register(Component.For<IInterfaceOnlyService>
().Interceptors<TestInterceptor>());
работает.
container.Register(Component.For<IInterfaceOnlyService>
().Interceptors(InterceptorReference.ForType(typeof(TestInterceptor))));
При взгляде на источник Castle, разница в том, что первый добавляет аддескриптор напрямую:
return this.AddDescriptor(new InterceptorDescriptor<TService>(new
InterceptorReference[] { new InterceptorReference(typeof(TInterceptor)) }));
Но второй использует внутреннюю группу перехватчиков:
return new InterceptorGroup<TService>((ComponentRegistration<TService>) this,
interceptors);
Соответственно, это, похоже, ошибка в InterceptorGroups.
Мой обходной путь (хотя и хакерский) - использовать мой LazyComponentLoader для прямого вызова AddDescriptor.