Exemplo n.º 1
0
        private static Task <FilterResult> ExecuteFilter(IServiceProvider serviceProvider, FilterAttribute attribute, MiddlewareData data)
        {
            if (attribute is IFilter filter)
            {
                return(filter.FilterAsync(attribute, data));
            }

            var filterImplementationAttribute = attribute.GetType().GetTypeInfo().GetCustomAttribute <FilterImplementationAttribute>();

            if (filterImplementationAttribute != null)
            {
                var instance = (IFilter)serviceProvider.GetInstance(filterImplementationAttribute.ImplementationType);
                return(instance.FilterAsync(attribute, data));
            }

            throw new InvalidOperationException("Cannot invoke filter " + attribute.GetType());
        }
        private IEnumerable<IActionFilter> ActionFiltersOf(FilterAttribute attribute)
        {
            var filterType = typeof (IActionFilter<>).MakeGenericType(attribute.GetType());

            return _serviceProvider.Invoke(filterType);
        }