public static string ToString(object configObject) { if (configObject == null) { return(String.Empty); } string configObjectString = ChoObject.ToString(configObject); ChoConfigurationElementMapAttribute configurationElementMap = ChoType.GetAttribute(configObject.GetType(), typeof(ChoConfigurationElementMapAttribute)) as ChoConfigurationElementMapAttribute; if (configurationElementMap == null) { return(configObjectString); } else if (configObjectString == configObject.GetType().FullName) { ChoStringMsgBuilder msg = new ChoStringMsgBuilder(configurationElementMap.Description); MemberInfo[] memberInfos = ChoType.GetMembers(configObject.GetType(), typeof(ChoMemberInfoAttribute)); if (memberInfos == null || memberInfos.Length == 0) { msg.AppendLine(ChoStringMsgBuilder.Empty); } else { string errMsg; foreach (MemberInfo memberInfo in memberInfos) { errMsg = ChoType.GetAttributeNameParameterValue(configObject.GetType(), memberInfo.Name, typeof(ChoMemberInfoAttribute), "ErrMsg") as string; if (errMsg == null) { msg.AppendFormatLine("{0}: {1}", memberInfo.Name, ChoType.GetMemberValue(configObject, memberInfo.Name)); } else { msg.AppendFormatLine("{0}: {1} [ERROR: {2}]", memberInfo.Name, ChoType.GetMemberValue(configObject, memberInfo.Name), errMsg); } } } msg.AppendNewLine(); return(msg.ToString()); } else { StringBuilder msg = new StringBuilder(configObjectString); MemberInfo[] memberInfos = ChoType.GetMembers(configObject.GetType(), typeof(ChoMemberInfoAttribute)); List <string> errMsgs = new List <string>(); if (memberInfos != null && memberInfos.Length >= 0) { string errMsg; foreach (MemberInfo memberInfo in memberInfos) { errMsg = ChoType.GetAttributeNameParameterValue(configObject.GetType(), memberInfo.Name, typeof(ChoMemberInfoAttribute), "ErrMsg") as string; if (errMsg != null) { errMsgs.Add(String.Format("{0}: {1}", memberInfo.Name, errMsg)); } } } if (errMsgs.Count > 0) { ChoStringMsgBuilder errReport = new ChoStringMsgBuilder("Following errors produced while construction"); foreach (string errMsg in errMsgs) { errReport.AppendFormatLine(errMsg); } msg.AppendLine(errReport.ToString()); } return(msg.ToString()); } }