private FilterTypeConfigurator <T> GetOrCreate <T>()
        {
            if (_types.TryGetValue(typeof(T), out var configurator))
            {
                return((FilterTypeConfigurator <T>)configurator);
            }
            var result = new FilterTypeConfigurator <T>();

            _types[typeof(T)] = result;
            return(result);
        }
 private ITypeFilter CreateFilter(FilterTypeConfigurator value)
 {
     if (value.IsDeny)
     {
         return(new DenyTypeFilter());
     }
     else if (value.AllowedProperties.Count > 0)
     {
         return(new AllowPropertyFilter(value.AllowedProperties, value.IsAllowed));
     }
     else
     {
         return(new DenyPropertyFilter(value.DeniedProperties, value.IsAllowed));
     }
 }