private static T ExtractValue <T>(this IQueryCollection queryCollection, params string[] names)
        {
            T result = default;

            foreach (var name in names)
            {
                result = queryCollection.ExtractValue <T>(name);

                if (result != null)
                {
                    return(result);
                }
            }

            return(result);
        }