private static object GetNormalizedValue(
            Dictionary <string, object> dictionary,
            ObjectExtensionPropertyInfo property)
        {
            var value = dictionary.GetOrDefault(property.Name);

            if (value == null)
            {
                return(property.GetDefaultValue());
            }

            try
            {
                if (property.Type.IsEnum)
                {
                    return(Enum.Parse(property.Type, value.ToString(), true));
                }

                //return Convert.ChangeType(value, property.Type);
                return(value);
            }
            catch
            {
                return(value);
            }
        }
Пример #2
0
    private static void ExecuteCustomPropertyValidationActions(
        IHasExtraProperties extensibleObject,
        List <ValidationResult> validationErrors,
        ValidationContext objectValidationContext,
        ObjectExtensionPropertyInfo property,
        object value)
    {
        if (!property.Validators.Any())
        {
            return;
        }

        var context = new ObjectExtensionPropertyValidationContext(
            property,
            extensibleObject,
            validationErrors,
            objectValidationContext,
            value
            );

        foreach (var validator in property.Validators)
        {
            validator(context);
        }
    }
Пример #3
0
    private static void AddPropertyValidationAttributeErrors(
        IHasExtraProperties extensibleObject,
        List <ValidationResult> validationErrors,
        ValidationContext objectValidationContext,
        ObjectExtensionPropertyInfo property,
        object value)
    {
        var validationAttributes = property.GetValidationAttributes();

        if (!validationAttributes.Any())
        {
            return;
        }

        var propertyValidationContext = new ValidationContext(extensibleObject, objectValidationContext, null)
        {
            DisplayName = property.Name,
            MemberName  = property.Name
        };

        foreach (var attribute in validationAttributes)
        {
            var result = attribute.GetValidationResult(
                value,
                propertyValidationContext
                );

            if (result != null)
            {
                validationErrors.Add(result);
            }
        }
    }
 public static ValidationAttribute[] GetValidationAttributes(this ObjectExtensionPropertyInfo propertyInfo)
 {
     return(propertyInfo
            .Attributes
            .OfType <ValidationAttribute>()
            .ToArray());
 }
        public ObjectExtensionPropertyInfoEfMappingOptions(
            [NotNull] ObjectExtensionPropertyInfo extensionProperty,
            [CanBeNull] Action <EntityTypeBuilder, PropertyBuilder> entityTypeAndPropertyBuildAction)
        {
            ExtensionProperty = Check.NotNull(extensionProperty, nameof(extensionProperty));

            EntityTypeAndPropertyBuildAction = entityTypeAndPropertyBuildAction;
        }
Пример #6
0
        public static bool IsMappedToFieldForEf(
            [NotNull] this ObjectExtensionPropertyInfo propertyExtension)
        {
            Check.NotNull(propertyExtension, nameof(propertyExtension));

            return(propertyExtension
                   .Configuration
                   .ContainsKey(EfPropertyConfigurationName));
        }
Пример #7
0
        public static ObjectExtensionPropertyInfoEfMappingOptions GetEfMappingOrNull(
            [NotNull] this ObjectExtensionPropertyInfo propertyExtension)
        {
            Check.NotNull(propertyExtension, nameof(propertyExtension));

            return(propertyExtension
                   .Configuration
                   .GetOrDefault(EfPropertyConfigurationName)
                   as ObjectExtensionPropertyInfoEfMappingOptions);
        }
Пример #8
0
        public static ObjectExtensionPropertyInfo MapEf(
            [NotNull] this ObjectExtensionPropertyInfo propertyExtension)
        {
            Check.NotNull(propertyExtension, nameof(propertyExtension));

            propertyExtension.Configuration[EfPropertyConfigurationName] =
                new ObjectExtensionPropertyInfoEfMappingOptions(
                    propertyExtension
                    );

            return(propertyExtension);
        }
 public ObjectExtensionPropertyValidationContext(
     [NotNull] ObjectExtensionPropertyInfo objectExtensionPropertyInfo,
     [NotNull] IHasExtraProperties validatingObject,
     [NotNull] List<ValidationResult> validationErrors,
     [NotNull] ValidationContext validationContext,
     [CanBeNull] object value)
 {
     ExtensionPropertyInfo = Check.NotNull(objectExtensionPropertyInfo, nameof(objectExtensionPropertyInfo));
     ValidatingObject = Check.NotNull(validatingObject, nameof(validatingObject));
     ValidationErrors = Check.NotNull(validationErrors, nameof(validationErrors));
     ValidationContext = Check.NotNull(validationContext, nameof(validationContext));
     Value = value;
 }
Пример #10
0
        public static ObjectExtensionPropertyInfo MapEf(
            [NotNull] this ObjectExtensionPropertyInfo propertyExtension,
            [CanBeNull] Action <EntityTypeBuilder, PropertyBuilder> entityTypeAndPropertyBuildAction)
        {
            Check.NotNull(propertyExtension, nameof(propertyExtension));

            propertyExtension.Configuration[EfPropertyConfigurationName] =
                new ObjectExtensionPropertyInfoEfMappingOptions(
                    propertyExtension,
                    entityTypeAndPropertyBuildAction
                    );

            return(propertyExtension);
        }
Пример #11
0
    public static ObjectExtensionPropertyInfo MapEfCore(
        [NotNull] this ObjectExtensionPropertyInfo propertyExtension,
        [CanBeNull] Action <PropertyBuilder> propertyBuildAction)
    {
        Check.NotNull(propertyExtension, nameof(propertyExtension));

        propertyExtension.Configuration[EfCorePropertyConfigurationName] =
            new ObjectExtensionPropertyInfoEfCoreMappingOptions(
                propertyExtension,
                propertyBuildAction
                );

        return(propertyExtension);
    }
Пример #12
0
    public static string GetInputType(this ObjectExtensionPropertyInfo propertyInfo)
    {
        foreach (var attribute in propertyInfo.Attributes)
        {
            var inputTypeByAttribute = GetInputTypeFromAttributeOrNull(attribute);
            if (inputTypeByAttribute != null)
            {
                return(inputTypeByAttribute);
            }
        }

        return(GetInputTypeFromTypeOrNull(propertyInfo.Type)
               ?? "text"); //default
    }
Пример #13
0
    private static void AddPropertyValidationErrors(
        IHasExtraProperties extensibleObject,
        List <ValidationResult> validationErrors,
        ValidationContext objectValidationContext,
        ObjectExtensionPropertyInfo property,
        object value)
    {
        AddPropertyValidationAttributeErrors(
            extensibleObject,
            validationErrors,
            objectValidationContext,
            property,
            value
            );

        ExecuteCustomPropertyValidationActions(
            extensibleObject,
            validationErrors,
            objectValidationContext,
            property,
            value
            );
    }
 public ObjectExtensionPropertyInfoEfMappingOptions(
     [NotNull] ObjectExtensionPropertyInfo extensionProperty)
 {
     ExtensionProperty = Check.NotNull(extensionProperty, nameof(extensionProperty));
 }