private static void DoObjectMemberValidation(object target)
        {
            if (target == null)
            {
                return;
            }

            if (target.GetType().IsPrimitive ||
                target is string || target is Enum
                )
            {
            }
            else
            {
                //Call the initialize to all members
                foreach (FieldInfo fieldInfo in ChoType.GetFields(target.GetType()))
                {
                    if (fieldInfo.IsReadOnly())
                    {
                        continue;
                    }

                    object fieldValue = ChoType.GetFieldValue(target, fieldInfo.Name);
                    if (fieldValue == null)
                    {
                        continue;
                    }

                    if (!(fieldValue is string) && fieldValue is IEnumerable)
                    {
                        foreach (object fieldItemValue in (IEnumerable)fieldValue)
                        {
                            DoObjectMemberValidation(fieldItemValue);
                        }
                    }
                    else
                    {
                        DoObjectMemberValidation(fieldValue);
                    }
                }
            }

            if (target != null && !(target is ChoRealProxy))
            {
                //Do Validate
                ChoDoObjectValidationAfterInitializationAttribute doObjectValidationAfterInitializationAttribute =
                    ChoType.GetAttribute <ChoDoObjectValidationAfterInitializationAttribute>(target.GetType());

                if (doObjectValidationAfterInitializationAttribute != null &&
                    doObjectValidationAfterInitializationAttribute.DoObjectValidation)
                {
                    ChoValidationResults validationResults = ChoValidation.Validate(target);
                    if (validationResults != null && validationResults.Count > 0)
                    {
                        throw new ChoValidationException("Failed to validate object.", validationResults);
                    }
                }
            }
        }
Beispiel #2
0
        public string Replace(string propertyName, string format)
        {
            if (!String.IsNullOrEmpty(propertyName))
            {
                return(ChoObject.Format(ChoType.GetFieldValue(null, propertyName), format));
            }

            return(propertyName);
        }
        private static bool DoObjectMemberInitialization(object target, bool beforeFieldInit, object state)
        {
            if (target.GetType().IsPrimitive ||
                target is string || target is Enum
                )
            {
            }
            else
            {
                //Call the initialize to all members
                foreach (FieldInfo fieldInfo in ChoType.GetFields(target.GetType()))
                {
                    if (fieldInfo.IsReadOnly())
                    {
                        continue;
                    }

                    object fieldValue = ChoType.GetFieldValue(target, fieldInfo.Name);
                    if (fieldValue == null)
                    {
                        continue;
                    }

                    if (!(fieldValue is string) && fieldValue is IEnumerable)
                    {
                        foreach (object fieldItemValue in (IEnumerable)fieldValue)
                        {
                            DoInitialize(fieldItemValue, beforeFieldInit, state);
                        }

                        DoInitialize(fieldValue, beforeFieldInit, state);
                    }
                    else
                    {
                        DoInitialize(fieldValue, beforeFieldInit, state);
                    }
                }
            }

            if (target is IChoObjectInitializable)
            {
                return(((IChoObjectInitializable)target).Initialize(beforeFieldInit, state));
            }
            else
            {
                return(false);
            }
        }
        private static void DoObjectMemberConversion(object ultimateParent, object target)
        {
            if (target == null)
            {
                return;
            }

            if (target.GetType().IsPrimitive ||
                target is string || target is Enum
                )
            {
            }
            else
            {
                DoPostObjectMemberConversion(ultimateParent, target);

                //Call the initialize to all members
                foreach (FieldInfo fieldInfo in ChoType.GetFields(target.GetType()))
                {
                    if (fieldInfo.IsReadOnly())
                    {
                        continue;
                    }

                    object fieldValue = ChoType.GetFieldValue(target, fieldInfo.Name);
                    if (fieldValue == null)
                    {
                        continue;
                    }

                    if (!(fieldValue is string) && fieldValue is IEnumerable)
                    {
                        foreach (object fieldItemValue in (IEnumerable)fieldValue)
                        {
                            DoObjectMemberConversion(ultimateParent, fieldItemValue);
                        }

                        ChoType.SetFieldValue(target, fieldInfo.Name, fieldValue);
                    }
                    else
                    {
                        DoObjectMemberConversion(ultimateParent, fieldValue);
                    }
                }
            }
        }