Example #1
0
        /// <summary>
        /// Register an exception filter to specified <see cref="IExceptionManagerBuilder"/>.
        /// </summary>
        /// <param name="builder">The <see cref="IExceptionManagerBuilder"/> to which the exception filter is registered.</param>
        /// <param name="filterName">The name of the registered exception filter.</param>
        /// <param name="filterType">The type of exception filter.</param>
        /// <param name="argumnets">The arguments passed to construct the target exception filter.</param>
        /// <returns>The <see cref="IExceptionManagerBuilder"/> with the exception filter registration.</returns>
        /// <exception cref="ArgumentNullException">The specified <paramref name="builder"/> is null.</exception>
        /// <exception cref="ArgumentNullException">The specified <paramref name="filterName"/> is null.</exception>
        /// <exception cref="ArgumentNullException">The specified <paramref name="filterType"/> is null.</exception>
        /// <exception cref="ArgumentException">The specified <paramref name="filterName"/> is a white space string.</exception>
        public static IExceptionManagerBuilder UseFilter(this IExceptionManagerBuilder builder, string filterName, Type filterType, params object[] argumnets)
        {
            Guard.ArgumentNotNull(builder, nameof(builder));
            Guard.ArgumentNotNullOrWhiteSpace(filterName, nameof(filterName));
            Guard.ArgumentAssignableTo <IExceptionFilter>(filterType, nameof(filterType));

            builder.GetFilters()[filterName] = (IExceptionFilter)ActivatorUtilities.CreateInstance(builder.ServiceProvider, filterType, argumnets);
            return(builder);
        }
Example #2
0
        /// <summary>
        /// Load exception policy settings to specified <see cref="IExceptionManagerBuilder"/>.
        /// </summary>
        /// <param name="builder">The <see cref="IExceptionManagerBuilder"/> to which the loaded settings is appled.</param>
        /// <param name="filePath">The path of the exception policy configuration file.</param>
        /// <param name="fileProvider">The <see cref="IFileProvider"/> used to load the configuration file.</param>
        /// <returns>The <see cref="IExceptionManagerBuilder"/> to which the loaded settings is appled.</returns>
        /// <remarks>If <paramref name="fileProvider"/> is not explicitly specified, the current directory specific <see cref="PhysicalFileProvider"/> will be used.</remarks>
        /// <exception cref="ArgumentNullException">The specified <paramref name="builder"/> is null.</exception>
        /// <exception cref="ArgumentNullException">The specified <paramref name="filePath"/> is null.</exception>
        /// <exception cref="ArgumentException">The specified <paramref name="filePath"/> is a white space string.</exception>
        public static IExceptionManagerBuilder LoadSettings(this IExceptionManagerBuilder builder, string filePath, IFileProvider fileProvider = null)
        {
            Guard.ArgumentNotNull(builder, nameof(builder));
            Guard.ArgumentNotNullOrWhiteSpace(filePath, nameof(filePath));
            fileProvider = fileProvider ?? new PhysicalFileProvider(Directory.GetCurrentDirectory());

            var configBuilder = new ConfigurationBuilder(fileProvider, filePath);
            var policies      = configBuilder.Build(out IDictionary <string, FilterConfiguration> filters);

            foreach (var it in filters)
            {
                ExceptionFilterConfiguration config = GetFilterConfiguration(it.Value.FilterType);
                config.Use(builder, it.Key, it.Value.Arguments.ToDictionary(item => item.Name, item => item.Value));
            }

            foreach (var it in policies)
            {
                builder.AddPolicy(it.Key, policyBuilder => BuildPolicy(policyBuilder, it.Value, builder.GetFilters()));
            }
            return(builder);
        }
Example #3
0
        public void GetFilters_Argument_Not_Allow_Null()
        {
            IExceptionManagerBuilder builder = null;

            Assert.Throws <ArgumentNullException>(() => builder.GetFilters());
        }