Esempio n. 1
0
        protected FilterHost(TContext context, IEnumerable <FilterConfiguration> configurations, IEnumerable <IFilter> filters)
        {
            if (context == null)
            {
                throw new ArgumentNullException(nameof(context), "Context must not be null.");
            }

            if (filters == null || filters.Any() == false)
            {
                throw new ArgumentNullException(nameof(filters), "No filter specified.");
            }

            _help = new StringWriter();
            _commandLineParser = new Parser(s =>
            {
                s.CaseSensitive             = false;
                s.CaseInsensitiveEnumValues = true;
                s.ParsingCulture            = CultureInfo.GetCultureInfo("en-US");
                s.HelpWriter = _help;
            });

            Context = context;

            Configurations = new FilterConfigurationCollection(DefaultConfigurations);

            Configurations.AddRange(FilterConfigurationAttribute.GetConfigurations(Context.GetType(), false));
            Configurations.AddRange(FilterConfigurationAttribute.GetConfigurations(this.GetType(), false));

            if (configurations != null)
            {
                Configurations.AddRange(configurations);
            }

            Filters = filters.ToDictionary(f => f.Info.OptionsType);
        }
Esempio n. 2
0
        private static ExceptionFilterConfiguration GetFilterConfiguration(Type filterType)
        {
            if (_filterConfigurations.TryGetValue(filterType, out ExceptionFilterConfiguration config))
            {
                return(config);
            }
            FilterConfigurationAttribute attribute = filterType.GetTypeInfo().GetCustomAttribute <FilterConfigurationAttribute>();

            if (null == attribute)
            {
                throw new InvalidOperationException(Resources.ExceptionFilterConfigurationTypeNotSet.Fill(filterType.FullName));
            }
            return(_filterConfigurations[filterType] = (ExceptionFilterConfiguration)Activator.CreateInstance(attribute.FilterConfigurationType));
        }