Ejemplo n.º 1
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);
            }
        }
        public ObjectExtensionPropertyInfoEfCoreMappingOptions(
            [NotNull] ObjectExtensionPropertyInfo extensionProperty, [CanBeNull] Action <PropertyBuilder> propertyBuildAction = null)
        {
            ExtensionProperty = Check.NotNull(extensionProperty, nameof(extensionProperty));

            PropertyBuildAction = propertyBuildAction;
        }
Ejemplo n.º 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);
                }
            }
        }
Ejemplo n.º 4
0
        public static bool IsMappedToFieldForEfCore(
            [NotNull] this ObjectExtensionPropertyInfo propertyExtension)
        {
            Check.NotNull(propertyExtension, nameof(propertyExtension));

            return(propertyExtension
                   .Configuration
                   .ContainsKey(EfCorePropertyConfigurationName));
        }
Ejemplo n.º 5
0
 public static ValidationAttribute[] GetValidationAttributes(this ObjectExtensionPropertyInfo propertyInfo)
 {
     // return propertyInfo
     //     .Attributes
     //     .OfType<ValidationAttribute> ()
     //     .Union (propertyInfo.ValidationAttributes)
     //     .ToArray ();
     return(propertyInfo.Attributes.OfType <ValidationAttribute> ().ToArray());
 }
 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;
 }
Ejemplo n.º 7
0
        public static ObjectExtensionPropertyInfoEfCoreMappingOptions GetEfCoreMappingOrNull(
            [NotNull] this ObjectExtensionPropertyInfo propertyExtension)
        {
            Check.NotNull(propertyExtension, nameof(propertyExtension));

            return(propertyExtension
                   .Configuration
                   .GetOrDefault(EfCorePropertyConfigurationName)
                   as ObjectExtensionPropertyInfoEfCoreMappingOptions);
        }
Ejemplo n.º 8
0
        public static ObjectExtensionPropertyInfo MapEfCore(
            [NotNull] this ObjectExtensionPropertyInfo propertyExtension, [CanBeNull] Action <PropertyBuilder> propertyBuildAction = null)
        {
            Check.NotNull(propertyExtension, nameof(propertyExtension));

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

            return(propertyExtension);
        }
        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
        }
Ejemplo n.º 10
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
                );
        }