public Task BindModelAsync(ModelBindingContext bindingContext)
        {
            if (!bindingContext.ModelMetadata.IsEnumerableType)
            {
                return(bindingContext.FailedResultAsync());
            }

            if (string.IsNullOrWhiteSpace(bindingContext.InputtedValue()))
            {
                return(bindingContext.NullResultAsync());
            }

            var typedValues = bindingContext.CreateArrayOfCertainType();

            bindingContext.ConvertItemsToEnumerableType().CopyTo(typedValues, 0);
            bindingContext.Model = typedValues;

            return(bindingContext.SuccessResultAsync());
        }
 public static object[] ConvertItemsToEnumerableType(this ModelBindingContext bindingContext) =>
 bindingContext.InputtedValue().Split(new[] { "," }, StringSplitOptions.RemoveEmptyEntries)
 .Select(x => TypeDescriptor.GetConverter(bindingContext.ModelType.GetTypeInfo()
                                          .GenericTypeArguments[0]).ConvertFromString(x.Trim()))
 .ToArray();