private static void DoPostTypeMemberConversion(Type type) { bool hasError = false; foreach (MemberInfo memberInfo in ChoType.GetMemberInfos(type, typeof(ChoTypeConverterAttribute))) { object memberValue = null; try { memberValue = ChoType.GetMemberValue(null, memberInfo.Name); ChoType.SetMemberValue(null, memberInfo, ChoObject.ConvertValueToObjectMemberType(type, memberInfo, memberValue) /* ChoConvert.ChangeType(configObject, memberInfo) */); } catch (TargetInvocationException) { throw; } catch (ChoFatalApplicationException) { throw; } catch (Exception ex) { hasError = true; ChoConfigurationObjectErrorManagerService.SetObjectMemberError(type, memberInfo.Name, String.Format("[Value: {0}] - {1}", ChoString.ToString(memberValue), ex.Message)); ChoType.SetMemberDefaultValue(null, memberInfo.Name); } } if (hasError) { ChoConfigurationObjectErrorManagerService.SetObjectError(type, "Object has some validation errors."); } }
private ReturnMessage ExecuteMethod(ref IMethodMessage returnMsg, MethodCallMessageWrapper methodCallMsg, MarshalByRefObject owner, ChoMemberInfo memberInfo) { try { PreMethodInvoke(owner, methodCallMsg, memberInfo); returnMsg = RemotingServices.ExecuteMessage(owner, methodCallMsg); memberInfo.ReturnMessage = returnMsg as ReturnMessage; if (memberInfo.Info != null) { memberInfo.MethodMsg = returnMsg; } PostMethodInvoke(owner, methodCallMsg, memberInfo); return(memberInfo.ReturnMessage); } catch (TargetInvocationException ex) { return(new ReturnMessage(ex.InnerException, methodCallMsg)); } catch (ChoFatalApplicationException) { throw; } catch (Exception ex) { //Trace.TraceError(ex.ToString()); ChoInterceptableObject interceptableObject = owner as ChoInterceptableObject; if (interceptableObject != null && interceptableObject.Initialized) { if (interceptableObject.IsConfigObjectSilent) { ChoConfigurationObjectErrorManagerService.SetObjectMemberError(interceptableObject, memberInfo.Name, String.Format(Resources.ConfigConstructMsg, ChoString.ToString(memberInfo.Value), ex.Message)); //PostMethodInvoke(owner, methodCallMsg, memberInfo); //return new ReturnMessage(null, methodCallMsg); } } string msg = "{0}: {1}".FormatString(memberInfo.Name, String.Format(Resources.ConfigConstructMsg, ChoString.ToString(memberInfo.Value), ex.Message)); ChoValidationException ex1 = new ChoValidationException(msg); if (OnMemberError(owner, memberInfo, ref ex)) { return(new ReturnMessage(null, null, 0, null, methodCallMsg)); } else { return(new ReturnMessage(ex1, methodCallMsg)); } } }
private static void GetErrorMsgs(object target, ChoStringMsgBuilder msg) { MemberInfo[] memberInfos = ChoType.GetMembers(target.GetType()); //, typeof(ChoMemberInfoAttribute)); List <string> errMsgs = new List <string>(); string errMsg; if (memberInfos != null && memberInfos.Length >= 0) { foreach (MemberInfo memberInfo in memberInfos) { errMsg = ChoConfigurationObjectErrorManagerService.GetObjectMemberError(target, memberInfo.Name); if (errMsg != null) { errMsgs.Add(String.Format("{0}: {1}", memberInfo.Name, errMsg)); } } } if (errMsgs.Count > 0) { msg.AppendLine(); ChoStringMsgBuilder errReport = new ChoStringMsgBuilder("Following errors occurred while construction"); foreach (string errMsg1 in errMsgs) { errReport.AppendFormatLine(errMsg1); } msg.AppendLine(errReport.ToString().Indent(1)); } else { errMsg = ChoConfigurationObjectErrorManagerService.GetObjectError(target); if (!errMsg.IsNullOrEmpty()) { msg.AppendLine(); ChoStringMsgBuilder errReport = new ChoStringMsgBuilder("Following errors occurred while construction"); errReport.AppendFormatLine(errMsg); msg.AppendLine(errReport.ToString().Indent(1)); } } }
public virtual bool PreMethodInvoke(object owner, MethodCallMessageWrapper methodCallMsg, ChoMemberInfo memberInfo) { MethodInfo methodInfo = (MethodInfo)methodCallMsg.MethodBase; ChoInterceptableObject interceptableObject = owner as ChoInterceptableObject; if (interceptableObject != null) { if (memberInfo.DirtyOperation && !interceptableObject.Silent) { if (interceptableObject.PreInvokeInternal(memberInfo)) { if (interceptableObject.Initialized) { interceptableObject.SetDirty(memberInfo.DirtyOperation); } else { interceptableObject.IsModified = true; } } else { return(false); } } } if (memberInfo.Info != null) { if (memberInfo.DirtyOperation) { ChoValidation.Validate(memberInfo.Info, memberInfo.Value); if (interceptableObject != null && interceptableObject.Initialized) { ChoConfigurationObjectErrorManagerService.ResetObjectMemberError(interceptableObject, memberInfo.Name); } } } return(true); }