public ObjectExtensionValidationContext(
     [NotNull] ObjectExtensionInfo objectExtensionInfo,
     [NotNull] IHasExtraProperties validatingObject,
     [NotNull] List <ValidationResult> validationErrors,
     [NotNull] ValidationContext validationContext)
 {
     ObjectExtensionInfo = Check.NotNull(objectExtensionInfo, nameof(objectExtensionInfo));
     ValidatingObject    = Check.NotNull(validatingObject, nameof(validatingObject));
     ValidationErrors    = Check.NotNull(validationErrors, nameof(validationErrors));
     ValidationContext   = Check.NotNull(validationContext, nameof(validationContext));
 }
Example #2
0
        public ObjectExtensionPropertyInfo(
            [NotNull] ObjectExtensionInfo objectExtension,
            [NotNull] Type type,
            [NotNull] string name)
        {
            ObjectExtension = Check.NotNull(objectExtension, nameof(objectExtension));
            Type            = Check.NotNull(type, nameof(type));
            Name            = Check.NotNull(name, nameof(name));

            Configuration = new Dictionary <object, object>();
            Attributes    = new List <Attribute>();
            Validators    = new List <Action <ObjectExtensionPropertyValidationContext> >();

            Attributes.AddRange(ExtensionPropertyHelper.GetDefaultAttributes(Type));
            DefaultValue = TypeHelper.GetDefaultValue(Type);
            Lookup       = new ExtensionPropertyLookupConfiguration();
        }
Example #3
0
        private static bool CanMapProperty(
            [NotNull] string propertyName,
            [CanBeNull] ObjectExtensionInfo sourceObjectExtension,
            [CanBeNull] ObjectExtensionInfo destinationObjectExtension,
            MappingPropertyDefinitionChecks?definitionChecks = null,
            string[] ignoredProperties = null)
        {
            Check.NotNull(propertyName, nameof(propertyName));

            if (ignoredProperties != null &&
                ignoredProperties.Contains(propertyName))
            {
                return(false);
            }

            if (definitionChecks != null)
            {
                if (definitionChecks.Value.HasFlag(MappingPropertyDefinitionChecks.Source))
                {
                    if (sourceObjectExtension == null)
                    {
                        return(false);
                    }

                    if (!sourceObjectExtension.HasProperty(propertyName))
                    {
                        return(false);
                    }
                }

                if (definitionChecks.Value.HasFlag(MappingPropertyDefinitionChecks.Destination))
                {
                    if (destinationObjectExtension == null)
                    {
                        return(false);
                    }

                    if (!destinationObjectExtension.HasProperty(propertyName))
                    {
                        return(false);
                    }
                }

                return(true);
            }
            else
            {
                var sourcePropertyDefinition      = sourceObjectExtension?.GetPropertyOrNull(propertyName);
                var destinationPropertyDefinition = destinationObjectExtension?.GetPropertyOrNull(propertyName);

                if (sourcePropertyDefinition != null)
                {
                    if (destinationPropertyDefinition != null)
                    {
                        return(true);
                    }

                    if (sourcePropertyDefinition.CheckPairDefinitionOnMapping == false)
                    {
                        return(true);
                    }
                }
                else if (destinationPropertyDefinition != null)
                {
                    if (destinationPropertyDefinition.CheckPairDefinitionOnMapping == false)
                    {
                        return(true);
                    }
                }

                return(false);
            }
        }