TimerElapsed事件的城堡温莎拦截器

时间:2018-09-10 13:44:49

标签: .net castle-windsor interceptor

拦截器注册有问题。当我的System.Timers.Timer Elapsed事件调用同一类中的方法时,未调用该方法的拦截器。如果从此类的外部调用了该类别的任何其他方法,则该方法确实起作用。我认为这似乎是here

所述的问题

我有一个通用的解决方案,可以使用如下所示的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);
    }
}

除了上述链接中描述的解决方案之外,还有其他更好的解决方案吗?我的意思是说,温莎团队是否提供任何解决方案来更好地解决此问题?

0 个答案:

没有答案