拦截器注册有问题。当我的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);
}
}
除了上述链接中描述的解决方案之外,还有其他更好的解决方案吗?我的意思是说,温莎团队是否提供任何解决方案来更好地解决此问题?