/// <summary>
        /// Replace the default filter attribute filter provider with an instance
        /// of this type.
        /// </summary>
        /// <param name="filterProviders">The global filter provider collection.</param>
        public static void Install(FilterProviderCollection filterProviders)
        {
            if (filterProviders == null) throw new ArgumentNullException("filterProviders");

            var existing = filterProviders.OfType<FilterAttributeFilterProvider>().SingleOrDefault();
            if (existing != null)
                filterProviders.Remove(existing);
            filterProviders.Add(new ImportCapableFilterAttributeFilterProvider());
        }
        public static IWindsorContainer InstallMvcFilterProvider(
            [NotNull] this FilterProviderCollection filterProviders, [NotNull] IWindsorContainer container,
            [CanBeNull] TypePropertyDescriptorCache propertyDescriptorCache)
        {
            if (filterProviders == null)
            {
                throw new ArgumentNullException(nameof(filterProviders));
            }
            if (container == null)
            {
                throw new ArgumentNullException(nameof(container));
            }
            var attributeFilterProviders = filterProviders.OfType <FilterAttributeFilterProvider>().ToArray();

            foreach (var attributeFilterProvider in attributeFilterProviders)
            {
                filterProviders.Remove(attributeFilterProvider);
            }
            filterProviders.Add(new WindsorFilterAttributeProvider(container, propertyDescriptorCache));
            return(container);
        }