Пример #1
0
        /// <summary>
        /// Adds a type representing an <see cref="IFilterMetadata"/> to a filter collection.
        /// </summary>
        /// <param name="filters">A collection of <see cref="IFilterMetadata"/>.</param>
        /// <param name="filterType">Type representing an <see cref="IFilterMetadata"/>.</param>
        /// <param name="order">The order of the added filter.</param>
        /// <returns>An <see cref="IFilterMetadata"/> representing the added service type.</returns>
        /// <remarks>
        /// Filter instances will created through dependency injection. Use
        /// <see cref="AddService(ICollection{IFilterMetadata}, Type)"/> to register a service that will be created via
        /// type activation.
        /// </remarks>
        public static IFilterMetadata AddService(
            [NotNull] this ICollection <IFilterMetadata> filters,
            [NotNull] Type filterType,
            int order)
        {
            if (!typeof(IFilterMetadata).GetTypeInfo().IsAssignableFrom(filterType.GetTypeInfo()))
            {
                var message = Resources.FormatTypeMustDeriveFromType(filterType.FullName, typeof(IFilterMetadata).FullName);
                throw new ArgumentException(message, nameof(filterType));
            }

            var filter = new ServiceFilterAttribute(filterType)
            {
                Order = order
            };

            filters.Add(filter);
            return(filter);
        }
Пример #2
0
        /// <summary>
        /// Adds a type representing an <see cref="IFilter"/> to a filter collection.
        /// </summary>
        /// <param name="filters">A collection of <see cref="IFilter"/>.</param>
        /// <param name="filterType">Type representing an <see cref="IFilter"/>.</param>
        /// <param name="order">The order of the added filter.</param>
        /// <returns>An <see cref="IFilter"/> representing the added service type.</returns>
        /// <remarks>
        /// Filter instances will created through dependency injection. Use
        /// <see cref="AddService(ICollection{IFilter}, Type)"/> to register a service that will be created via
        /// type activation.
        /// </remarks>
        public static IFilter AddService(
            [NotNull] this ICollection<IFilter> filters,
            [NotNull] Type filterType,
            int order)
        {
            if (!typeof(IFilter).GetTypeInfo().IsAssignableFrom(filterType.GetTypeInfo()))
            {
                var message = Resources.FormatTypeMustDeriveFromType(filterType.FullName, typeof(IFilter).FullName);
                throw new ArgumentException(message, nameof(filterType));
            }

            var filter = new ServiceFilterAttribute(filterType) { Order = order };
            filters.Add(filter);
            return filter;
        }