private object CreateObject(Type destinationType, string propertyName = "")
        {
            object propValue = null;

            if (propertyName == null)
            {
                propertyName = "";
            }

            object buf;

            if (TryGetAsNotIndexedListOrArray(destinationType, propertyName, out buf) ||
                TryGetFromFormData(destinationType, propertyName, out buf) ||
                TryGetAsGenericDictionary(destinationType, propertyName, out buf) ||
                TryGetAsIndexedGenericListOrArray(destinationType, propertyName, out buf) ||
                TryGetAsCustomType(destinationType, propertyName, out buf))
            {
                propValue = buf;
            }
            else if (IsNotNullableValueType(destinationType) &&
                     IsNeedValidateMissedProperty(propertyName))
            {
                _logger.LogError(propertyName, "The value is required.");
            }
            else if (!IsFileOrConvertableFromString(destinationType))
            {
                _logger.LogError(propertyName, String.Format("Cannot parse type \"{0}\".", destinationType.FullName));
            }

            return(propValue);
        }
        private object CreateObject(Type destinitionType, string propertyName = "")
        {
            object propValue = null;


            if (TryGetFromFormData(destinitionType, propertyName, out object buf) ||
                TryGetAsGenericDictionary(destinitionType, propertyName, out buf) ||
                TryGetAsGenericListOrArray(destinitionType, propertyName, out buf) ||
                TryGetAsCustomType(destinitionType, propertyName, out buf))
            {
                propValue = buf;
            }
            else if (!IsFileOrConvertableFromString(destinitionType))
            {
                _logger.LogError(propertyName, $"Cannot parse type \"{destinitionType.FullName}\".");
            }

            return(propValue);
        }