protected virtual void TraceOutput(bool isDirty)
        {
            if (!LogCondition)
            {
                return;
            }

            if (ConfigObject == null)
            {
                throw new ChoConfigurationConstructionException("configObject");
            }

            try
            {
                ChoStringMsgBuilder msg = new ChoStringMsgBuilder(String.Format("{0} {1}", isDirty ? "*" : " ", ChoObject.ToString(ConfigObject, ChoFormattableObject.ExtendedFormatName)));

                if (ConfigSection != null && MetaDataInfo != null)
                {
                    msg.AppendNewLine();
                    ChoStringMsgBuilder metaDataMsg = new ChoStringMsgBuilder(ChoObject.ToString(MetaDataInfo));
                    msg.Append(metaDataMsg.ToString());
                }

                Log(msg.ToString());
            }
            catch (Exception ex)
            {
                Trace.Write(ex);
                if (!Silent)
                {
                    throw;
                }
            }
        }
Beispiel #2
0
        public new string ToString()
        {
            ChoStringMsgBuilder msg = new ChoStringMsgBuilder("{0} ChoThreadPool Settings", Name);

            msg.AppendNewLine();
            msg.AppendLine("MaxWorkerThreads: {0}", _maxWorkerThreads);
            msg.AppendLine("MinWorkerThreads: {0}", _minWorkerThreads);
            msg.AppendLine("IdleTimeout: {0}", _idleTimeout);
            msg.AppendLine("DisposeOfStateObjects: {0}", _disposeOfStateObjects);
            msg.AppendLine("UseCallerContext: {0}", _useCallerContext);
            msg.AppendLine("PostExecuteWorkItemCallback: {0}", _postExecuteWorkItemCallback);
            msg.AppendLine("CallToPostExecute: {0}", _callToPostExecute);
            msg.AppendLine("BlockIfPoolBusy: {0}", _blockIfPoolBusy);
            msg.AppendNewLine();

            return(msg.ToString());
        }
        private static string ToString(object target, bool collectErrMsgs, ChoMemberFormatterAttribute memberFormaterAttribute1,
                                       ChoMemberItemFormatterAttribute memberItemFormaterAttribute1, BindingFlags bindingFlags)
        {
            if (target == null)
            {
                return(String.Empty);
            }

            if (memberFormaterAttribute1 != null && memberFormaterAttribute1.CanFormat())
            {
                if (target.GetType().IsSimple())
                {
                    return(memberFormaterAttribute1.FormatObject(target));
                }
                else
                {
                    ChoStringMsgBuilder msg = new ChoStringMsgBuilder();
                    //msg.AppendLineIfNoNL(memberFormaterAttribute1.FormatObject(target));
                    msg.Append(memberFormaterAttribute1.FormatObject(target));
                    //msg.AppendNewLine();
                    if (collectErrMsgs)
                    {
                        GetErrorMsgs(target, msg);
                    }
                    return(msg.ToString());
                }
            }
            else if (target.GetType().IsSimple() || target.GetType().IsMethodImplemented("ToString"))
            {
                return(target.ToString());
            }
            else if (target is Delegate)
            {
                return(String.Format("{0}.{1}", ((Delegate)target).Target == null ? "[Static]" : ((Delegate)target).Target.GetType().FullName, ((Delegate)target).Method.Name));
            }
            else if (target is IEnumerable)
            {
                StringBuilder arrMsg = new StringBuilder();

                int count = 0;
                foreach (object item in (IEnumerable)target)
                {
                    count++;
                    arrMsg.AppendFormat("{0}{1}", ToString(item, collectErrMsgs, memberItemFormaterAttribute1, null, bindingFlags), Environment.NewLine);
                }

                return("[Count: {0}]{1}{2}".FormatString(count, Environment.NewLine, arrMsg.ToString()));
            }

            else
            {
                bool   foundMatchingFormatter = false;
                string retValue = ChoObject.Format(target, null, out foundMatchingFormatter);

                if (foundMatchingFormatter)
                {
                    if (target.GetType().IsSimple())
                    {
                        return(retValue);
                    }
                    else
                    {
                        ChoStringMsgBuilder msg = new ChoStringMsgBuilder();
                        msg.AppendFormat(retValue);
                        msg.AppendNewLine();
                        if (collectErrMsgs)
                        {
                            GetErrorMsgs(target, msg);
                        }
                        return(msg.ToString());
                    }
                }
                else
                {
                    ChoInterceptableObject interceptableObject = null;
                    try
                    {
                        if (ChoType.IsRealProxyObject(target.GetType()))
                        {
                            interceptableObject = ChoInterceptableObject.Silentable(target as ChoInterceptableObject);
                        }

                        ChoTypeFormatterAttribute objectFormatter = ChoType.GetAttribute(target.GetType(), typeof(ChoTypeFormatterAttribute)) as ChoTypeFormatterAttribute;
                        if (objectFormatter == null)
                        {
                            ChoStringMsgBuilder msg = new ChoStringMsgBuilder(memberFormaterAttribute1 == null ? String.Format("{0} State", target.GetType().FullName)
                                : memberFormaterAttribute1.Name);

                            //MemberInfo[] memberInfos = target.GetType().GetMembers(bindingFlags /*BindingFlags.Public | BindingFlags.Instance /*| BindingFlags.DeclaredOnly*/ /*| BindingFlags.GetField | BindingFlags.GetProperty*/);
                            IEnumerable <MemberInfo> memberInfos = ChoType.GetGetFieldsNProperties(target.GetType(), bindingFlags);
                            if (memberInfos == null || memberInfos.Count() == 0)
                            {
                                msg.AppendFormatLine(ChoStringMsgBuilder.Empty);
                            }
                            else
                            {
                                foreach (MemberInfo memberInfo in memberInfos)
                                {
                                    if (!ChoType.IsValidObjectMember(memberInfo))
                                    {
                                        continue;
                                    }

                                    ChoIgnoreMemberFormatterAttribute memberFormatterIgnoreAttribute = ChoType.GetMemberAttribute(memberInfo, typeof(ChoIgnoreMemberFormatterAttribute)) as ChoIgnoreMemberFormatterAttribute;
                                    if (memberFormatterIgnoreAttribute != null)
                                    {
                                        continue;
                                    }

                                    string memberText = GetNFormatMemberValue(target, memberInfo, collectErrMsgs, null, null, bindingFlags);

                                    int count = 0;
                                    if (GetCountFromMsg(ref memberText, ref count))
                                    {
                                        msg.AppendFormatLine("{0} [Length: {2}]: {1}", memberInfo.Name, memberText, count);
                                    }
                                    else if (!memberText.ContainsHeader())
                                    {
                                        msg.AppendFormatLine("{0}: {1}", memberInfo.Name, memberText);
                                    }
                                    else
                                    {
                                        msg.AppendFormatLine("{0}: {1}", memberInfo.Name, memberText);
                                    }
                                }
                            }
                            msg.AppendNewLine();

                            if (collectErrMsgs)
                            {
                                GetErrorMsgs(target, msg);
                            }

                            return(msg.ToString());
                        }
                        else
                        {
                            ChoStringMsgBuilder msg = new ChoStringMsgBuilder(ChoString.ExpandProperties(target, objectFormatter.Header));;
                            if (objectFormatter.HasFormatSpecified)
                            {
                                msg.AppendFormat(objectFormatter.FormatObject(target));
                            }
                            else
                            {
                                //MemberInfo[] memberInfos = target.GetType().GetMembers(bindingFlags /*BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance /*| BindingFlags.DeclaredOnly*/ /*| BindingFlags.GetField | BindingFlags.GetProperty*/);
                                IEnumerable <MemberInfo> memberInfos = ChoType.GetGetFieldsNProperties(target.GetType(), bindingFlags);

                                if (memberInfos == null || memberInfos.Count() == 0)
                                {
                                    msg.AppendFormatLine(ChoStringMsgBuilder.Empty);
                                }
                                else
                                {
                                    bool isPublicMember = true;
                                    foreach (MemberInfo memberInfo in memberInfos)
                                    {
                                        if (!ChoType.IsValidObjectMember(memberInfo))
                                        {
                                            continue;
                                        }

                                        isPublicMember = true;

                                        ChoIgnoreMemberFormatterAttribute memberFormatterIgnoreAttribute = ChoType.GetMemberAttribute(memberInfo, typeof(ChoIgnoreMemberFormatterAttribute)) as ChoIgnoreMemberFormatterAttribute;
                                        if (memberFormatterIgnoreAttribute != null)
                                        {
                                            continue;
                                        }

                                        ChoMemberFormatterAttribute     memberFormaterAttribute     = ChoType.GetMemberAttribute(memberInfo, typeof(ChoMemberFormatterAttribute)) as ChoMemberFormatterAttribute;
                                        ChoMemberItemFormatterAttribute memberItemFormaterAttribute = ChoType.GetMemberAttribute(memberInfo, typeof(ChoMemberItemFormatterAttribute)) as ChoMemberItemFormatterAttribute;

                                        if (memberInfo is PropertyInfo)
                                        {
                                            MethodInfo getMethod = ((PropertyInfo)memberInfo).GetGetMethod(true);
                                            isPublicMember = getMethod != null && getMethod.IsPublic;
                                        }
                                        else if (memberInfo is FieldInfo)
                                        {
                                            isPublicMember = ((FieldInfo)memberInfo).IsPublic;
                                        }
                                        else
                                        {
                                            continue;
                                        }

                                        if (isPublicMember || (!isPublicMember && memberFormaterAttribute != null))
                                        {
                                            object memberValue = ChoType.GetMemberValue(target, memberInfo);
                                            if (memberValue == target)
                                            {
                                                return(null);
                                            }

                                            string memberText = GetNFormatMemberValue(target, memberInfo, collectErrMsgs, memberFormaterAttribute, memberItemFormaterAttribute, bindingFlags);
                                            string memberName = memberFormaterAttribute == null || memberFormaterAttribute.Name.IsNullOrEmpty() ? memberInfo.Name : ChoPropertyManager.ExpandProperties(target, memberFormaterAttribute.Name);

                                            if (memberFormaterAttribute == null || !memberFormaterAttribute.CanFormat())
                                            {
                                                int count = 0;
                                                if (GetCountFromMsg(ref memberText, ref count))
                                                {
                                                    msg.AppendFormatLine("{0} [Length: {2}]: {1}", memberName, memberText, count);
                                                }
                                                else if (memberText.ContainsHeader())
                                                {
                                                    msg.AppendFormatLine("{0}: {1}", memberName, memberText);
                                                }
                                                else
                                                {
                                                    msg.AppendFormatLine("{0}: {1}", memberName, memberText);
                                                }
                                            }
                                            else if (memberFormaterAttribute.Name == ChoNull.NullString)
                                            {
                                                msg.Append(memberFormaterAttribute.PostFormat(memberName, memberText));
                                            }
                                            else
                                            {
                                                msg.AppendFormat(memberFormaterAttribute.PostFormat(memberName, memberText));
                                            }
                                        }
                                    }
                                }
                            }
                            //msg.AppendNewLine();
                            if (collectErrMsgs)
                            {
                                GetErrorMsgs(target, msg);
                            }

                            return(msg.ToString());
                        }
                    }
                    finally
                    {
                        if (interceptableObject != null)
                        {
                            interceptableObject.Dispose();
                        }
                    }
                }
            }
        }
        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());
            }
        }