У меня проблема с регистрацией перехватчика. Когда мое событие System.Timers.Timer Elapsed вызывает метод в том же классе, мой перехватчик для метода не вызывается. Это работает, если любой из других методов класса вызывается извне этого класса. Я думаю, что это, кажется, проблема, как описано здесь
У меня есть общее решение, которое регистрирует все доступные перехватчики, используя класс ContainerExtensions, показанный ниже:
public static class ContainerExtensions
{
public static void AddInterceptor(this IWindsorContainer container, IHandler selector)
{
IEnumerable<Type> services = selector.ComponentModel.Services;
foreach (var service in services)
{
var interceptorsSelector = (IModelInterceptorsSelector)container.Resolve(service);
container.Kernel.ProxyFactory.AddInterceptorSelector(interceptorsSelector);
}
}
public static void RegisterInterceptorSelectors(this IWindsorContainer container)
{
var interceptorSelectors = container.Kernel
.GetAssignableHandlers(typeof(IModelInterceptorsSelector))
.ToList();
foreach (var item in interceptorSelectors)
container.AddInterceptor(item);
}
}
Есть ли лучшее решение, кроме описанного в приведенной выше ссылке? Я имею в виду, есть ли у нас какое-либо решение, предложенное командой Windsor, чтобы решить эту проблему лучше?