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); } } } }
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); } } } }