Замок Виндзорский перехватчик для события TimerElapsed - PullRequest
0 голосов
/ 10 сентября 2018

У меня проблема с регистрацией перехватчика. Когда мое событие 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, чтобы решить эту проблему лучше?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...