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); }
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)); }